MySQL数据库引擎

来源:互联网 发布:西北大学网络教育登陆 编辑:程序博客网 时间:2024/05/21 10:47

php交流群:45503780

MySQL中最常用的两种引擎是innodb和myisam。

·第一部分:

Myisam适用于较小的数据库,数据量相对较小。innodb可以存储的数据量则更大。
Myisam强调快速读取操作,查询相同数据量的表,Myisam可以更快;同时,Myisam表占用的空间大小要比innordb小,更加节省空间;

Myisam没有任何的事物处理机制,不能在表损坏后恢复数据,也就是不能进行事务处理。相反,innodb给Mysql提供了提交,回滚和崩溃恢复能力的事物安全机制;innordb数据引擎不仅支持事务处理还支持外键的功能【外键,通俗的讲就是表中的一个属性受约束与另一个表的属性】。


第二部分:

总结:一般来说,MyISAM适合:(1)做很多count 的计算,因为Myisam缓存有表meta-data,意味着执行count不需要消耗多少资源;(2)插入不频繁,查询非常频繁;(3)没有事务。(4)适合数据量少的操作。InnoDB适合:(1)可靠性要求比较高,或者要求事务;(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
第三部分:
这里主要想介绍一下外键机制。
外键,通俗的讲就是表中的一个属性受约束于另一个表的属性。这里对外键简要介绍,举个例子:
               ALTER TABLE table1 ADD CONSTRAINT fk_model 
               FOREIGN KEY (foreignkey) 
               REFERENCES table2 (key)
               ON UPDATE CASCADE;
Constraint英文意思“约束”,fk_model表示给外键起的名字【添加一个名为fk_mode的约束】;foreignkey表示table1中的一个将受约束的属性;references表示“参照”的意思,表示这个外键受的约束来至于table2(key); ON UPDATE CASCADE,即在主表更新时,子表(们)产生连锁更新动作,似乎有些人喜欢把这个叫“级联”操作。

外键的要求:外键列必须建立了索引,MySQL 4.1.2以后的版本在建立外键时会自动创建索引,但如果在较早的版本则需要显示建立; 外键关系的两个表的列必须是数据类型相似,也就是可以相互转换类型的列,比如int和tinyint可以,而int和char则不可以;外键的好处:可以使得两张表关联,保证数据的一致性和实现一些级联操作;


第四部分:
说一下其他的数据引擎

除了这些之外,还有ISAM和HEAP数据库引擎,Myisam是ISAM的扩展,除了提供ISAM里所没有的索引和字段管理的大量功能,MyISAM还使用一种表格锁定的机制,来优化多个并发的读写操作。HEAP允许只驻留在内存里的临时表格。驻留在内存里让HEAP要比ISAM和MYISAM都快,但是它所管理的数据是不稳定的,而且如果在关机之前没有进行保存,那么所有的数据都会丢失。

原创粉丝点击