如何选择数据库存储引擎
Posted 啥也不会的程序猿
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何选择数据库存储引擎相关的知识,希望对你有一定的参考价值。
根据每个不同的存储引擎提供的不同的核心功能、以及不同的应用场景等;一般把核心功能分为4类:支持的字段和数据类型、锁定类型、索引、以及事务处理;
1:支持的字段和数据类型:
虽然所有的引擎都支持通用的数据类型(如:整型、字符串等)、但是、并不是所有的引擎都支持其它的字段类型(如:二进制、TEXT文本类型);
2:锁定类型:
锁定机制主要是为了防止多个处理同时更新同一个数据。不同的存储引擎支持不同级别的锁:表锁定、页锁、行锁等;
3:表锁:
开销小、加锁快、不会出现死锁。锁定力度大、发生锁冲突的概率比较高、并发度最低。支持最多的就是表锁定,MYISAM 和 MEMORY 支持表锁。mysql的表锁有两种模式、表共享读锁和表共享写锁。对于 MYISAM 表的读操作、不会阻塞其它用户对同一表读的请求、但是会阻塞对同一表的写请求;对 MyISAM 表的写操作、则会阻塞其它用户对同一表的读和写操作;
4:行锁:
开销大、加锁慢、会出现死锁;锁力度最小、发生锁冲突的概率最低、并发也是最高的。InnoDB 表进是行锁定;
5:索引:
建立索引在搜索和恢复数据库中的数据的时候、能够显著提高性能;不同的存储引擎提供不同的制作索引对技术、有的搜索引擎不支持索引;
6:事务处理:
事务处理有助于提高向表中更新数据和插入数据期间的可靠性;
ISAM:
ISAM 是一个定义明确且历经时间考验的数据表格管理方法,它在设计之时就考虑到数 据库被查询的次数要远大于更新的次数。因此,ISAM 执行读取操作的速度很快,而且不占 用大量的内存和存储资源。ISAM 的两个主要不足之处在于,它不支持事务处理,也不能够 容错:如果你的硬盘崩溃了,那么数据文件就无法恢复了。
MyISAM:
MyISAM 管理非事务表、是ISAM 的扩展格式。除了提供ISAM里所没有的索引的字段管理等的大量功能、MyISAM 还使用一种表格锁定的机制、来优化多个并发的读写操作。MyISAM 提供高速存储和检索、以及全文搜索能力;在MYSQL5.5.5版本及以下的所有MYSQL配置里被支持。也是默认的存储引擎。
InnoDB:
InnoDB 引擎是MySQL数据库的另一个重要的存储引擎、被包含在所有的二进制安装包里面、和其它的存储引擎相比、InnoDB引擎的优点是支持兼容ACID的事物、以及参数完整性(有外键)等。MySQL5.5.5以后默认的存储引擎都是InnoDB引擎;
以上是关于如何选择数据库存储引擎的主要内容,如果未能解决你的问题,请参考以下文章