我非DBA,知识这两天路过学习了一点MySQL的知识,并且进行了一些SQL操作,为了方便记忆以及今后查阅,简单做下记录(有点零乱的)。 SQL命令(语句)的分类:DDL, DML, DCL, TCL Data Definition Language (DDL) statements are used to define the database
我非DBA,知识这两天路过学习了一点MySQL的知识,并且进行了一些SQL操作,为了方便记忆以及今后查阅,简单做下记录(有点零乱的)。
SQL命令(语句)的分类:DDL, DML, DCL, TCL
Data Definition Language (DDL) statements are used to define the database structure or schema. DDL示例:CREATE, ALTER, DROP, TRUNCATE, RENAME
Data Manipulation Language (DML) statements are used for managing data within schema objects. DML示例:SELECT, INSERT, UPDATE, DELETE, CALL, EXPLAIN PLAN, LOCK TABLES
Data Control Language (DCL) statements. DCL示例:GRANT, REVOKE
Transaction Control (TCL) statements are used to manage the changes made by DML statements. It allows statements to be grouped together into logical transactions. TCL示例:COMMIT, SAVEPOINT, ROLLBACK, SET TRANSACTION
来自:http://www.orafaq.com/faq/what_are_the_difference_between_ddl_dml_and_dcl_commands
MyISAM和Innodb存储引擎中的索引的区别:
1. MyISAM默认使用B-tree索引只把索引载入内存,数据缓存依赖于操作系统,InnoDB使用聚集索引实际上是在同样的结构中保存了B-tree索引和数据行,把索引和索引的数据都载入内存缓冲 。
2. MyISAM数据库中的数据是按照插入的顺序保存,在每个索引节点中保存对应的数据行的地址,理论上说主键索引和其他索引是一样的;InnoDB数据库中的数据和主键节点保存在一起,所有其他索引节点中保存的是主键索引的值。
3. 在InnoDB表中插入数据一定要尽可能按照主键增本文来源gaodai$ma#com搞$代*码*网加的顺序,AUTO_INCREMENT最好,这样插入的速度最快,如果没有按照主键顺序插入数据,在插入后最好使用OPTIMIZE TABLE重新组织表。
4. 因为InnoDB索引节点中保存的是主键的值,所以主键的值越简单越好。
5. 对于InnoDB表,在查询的时候如果只需要查找索引列,就不要加入其它列,这样速度最快。
6. MyISAM和Innodb的B-tree索引支持前缀索引,有最左匹配原则。
参考:http://www.cyrec.org/posts/myisam-innodb-index
提高mysql插入数据的速度,可以参考这里提出的一些Tips: http://hi.baidu.com/jackbillow/item/d40d1eedb1eecb0d64db0027
MySQL使用分区表的好处:
1,可以把一些归类的数据放在一个分区中,可以减少服务器检查数据的数量加快查询。
2,方便维护,通过删除分区来删除老的数据。
3,分区数据可以被分布到不同的物理位置,可以做分布式有效利用多个硬盘驱动器。
MySQL可以建立四种分区类型的分区:
1. RANGE 分区:基于属于一个给定连续区间的列值,把多行分配给分区。 (这种分区类型,很久之前在实际业务中也遇到的过的,那时是Oracle)
2. LIST 分区:类似于按RANGE分区,区别在于LIST分区是基于列值匹配一个离散值集合中的某个值来进行选择。
3. HASH分区:基于用户定义的表达式的返回值来进行选择的分区,该表达式使用将要插入到表中的这些行的列值进行计算。这个函数可以包含MySQL 中有效的、产生非负整数值的任何表达式。
4. KEY 分区:类似于按HASH分区,区别在于KEY分区只支持计算一列或多列,且MySQL 服务器提供其自身的哈希函数。必须有一列或多列包含整数值。
一般用得多的是range分区和list分区。
参考:http://www.cyrec.org/posts/mysql-partition-tables