MySQL MyISAM/InnoDB

来源:互联网 发布:淘宝店铺电脑装修教程 编辑:程序博客网 时间:2024/06/06 02:40

MySQL常见的表类型(即存储引擎)

show engines包 括:MyISAM/Innodb/Memory/Merge/NDB

其中,MyISAM和Innodb是最常用的两个表类型,各有优势,我们可以根据需求情况选择适合自己的表类型。
[MyISAM]
1)每个数据库存储包括3个文件:.frm(表定义)、MYD(数据文件)、MYI(索引文件)
2)数据文件或索引文件可以指向多个磁盘
3)Linux的默认引擎,win默认InnoDB
4)面向非事务类型,避免事务型额外的开销
5)适用于select、insert密集的表
6)MyISAM默认锁的调度机制是写优先,可以通过LOW_PRIORITY_UPDATES设置
7)MyISAM类型的数据文件可以在不同操作系统中COPY,这点很重要,布署的时候方便点。

[Innodb]
1)用于事务应用程序
2)适用于update、delete密集的操作。

执行select count(*) from table时,InnoDB要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。

注意的是,当count(*)语句包含 where条件时,两种表的操作是一样的。

DELETE FROM table时,InnoDB不会重新建立表,而是一行一行的删除。
3)引入行级锁和外键的约束
4)InnoDB不支持FULLTEXT类型的索引

页级:引擎 BDB。
表级:引擎 MyISAM , 理解为锁住整个表,可以同时读,写不行
行级:引擎 INNODB , 单独的一行记录加锁

表级,直接锁定整张表,在你锁定期间,其它进程无法对该表进行写操作。如果你是写锁,则其它进程则读也不允许
行级,,仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作。
页级,表级锁速度快,但冲突多,行级冲突少,但速度慢。所以取了折衷的页级,一次锁定相邻的一组记录。

0 0
原创粉丝点击