Linux MySQL 存储引擎
MySQL的数据存储方式不同,格式也是不同的,所有需要存储引擎来定义。
目录
一、存储引擎概述
二、存储引擎的作用
三、存储引擎的分类
四、存储引擎的应用
五、存储引擎的管理
六、总结
一、存储引擎概述
1.存储应用概述
MySQL中的数据用各种不同的技术存储在文件中,每一种技术都使用不同的存储机制、索引技巧、锁定水平并最终提供不同的功能和能力,这些不同的技术以及配套的功能在MySQL中称为存储引擎
存储引擎是MySQL将数据存储在文件系统中的存储方式或者存储格式。
二、存储引擎的作用
MySQL数据库中的组件,负责执行实际的数据I/O操作
MySQL系统中,存储引擎处于文件系统之上,在数据保存到数据文件之前会传输到存储引擎,之后按照各个存储引擎的存储格式进行存储
1.存储引擎的作用
-
数据的存储和检索:不同的存储引擎可以对同一张表进行不同的存储和检索方式,从而影响数据库的读写性能和效率。例如,InnoDB存储引擎支持事务和行级锁定,适用于需要高并发访问的场景;MyISAM存储引擎则不支持事务,但适用于读写比较少的场景。
-
数据的安全性和完整性:存储引擎可以通过实现不同的隔离级别来保证数据的安全性和完整性。例如,InnoDB存储引擎支持四种隔离级别,可以避免脏读、不可重复读和幻读等问题。
-
数据的扩展性和灵活性:存储引擎可以通过提供不同的存储格式和索引方式来支持不同的数据类型和查询需求。例如,MySQL支持多种存储引擎,如Memory、CSV、Archive等,可以根据不同的数据特点选择合适的存储引擎。
-
数据库的性能和效率:存储引擎可以通过实现不同的数据结构和算法来提高数据库的性能和效率。例如,InnoDB存储引擎采用B+树索引结构和自适应哈希索引等技术,可以提高查询效率和并发性能。
-
综上所述,存储引擎在数据库管理系统中起着重要的作用,可以影响数据库的性能、安全性和灵活性等方面。因此,在选择存储引擎时,需要根据具体的应用场景和需求来进行选择和优化。
三、存储引擎的分类
1.存储引擎的分类
-
事务型存储引擎:事务型存储引擎支持事务和行级锁定,适用于需要高并发访问的场景。常见的事务型存储引擎包括InnoDB、BDB等。
-
非事务型存储引擎:非事务型存储引擎不支持事务和行级锁定,适用于读写比较少的场景。常见的非事务型存储引擎包括MyISAM、CSV等。
-
内存型存储引擎:内存型存储引擎将数据存储在内存中,查询速度非常快,但是数据容易丢失。常见的内存型存储引擎包括Memory、Heap等。
-
列存储型存储引擎:列存储型存储引擎将表中的每一列单独存储,适用于大数据量的数据仓库等场景。常见的列存储型存储引擎包括Infobright、InfiniDB等。
-
分布式存储引擎:分布式存储引擎可以将数据分布 在不同的节点上,以提高数据库的可扩展性和可用性。常见的分布式存储引擎包括HBase、Cassandra等。
-
四、存储引擎的应用
1.MyISAM
MyISAM不支持事务,也不支持外键约束,只支持全文索引,数据文件和索引文件是分开保存的
(1)MyISAM特点
访问速度快,对事务完整性没有要求
MyISAM 适合查询、插入为主的应用场景
(2)MyISAM的三个文件
.frm 文件存储表结构的定义
数据文件的扩展名为 .MYD (MYData)
索引文件的扩展名是 .MYI (MYIndex)
(3)锁表
MyIsam 是表级锁定,读或写无法同时进行
数据库在读写过程中相互阻塞: 串行操作,按照顺序操作,每次在读或写的时候会把全表锁起来
会在数据写入的过程阻塞用户数据的读取
也会在数据读取的过程中阻塞用户的数据写入
特性:数据单独写入或读取,速度过程较快且占用资源相对少
(4)存储格式
(1)静态(固定长度)表
(2)动态表
(3)压缩表
(5)生产场景
公司业务不需要事务的支持
单方面读取或写入数据比较多的业务
MyISAM存储引擎数据读写都比较频繁场景不适合
使用读写并发访问相对较低的业务
数据修改相对较少的业务
对数据业务一致性要求不是非常高的业务
服务器硬件资源相对比较差
2.InnoDB
(1)InnoDB特点
支持事务,支持4个事务隔离级别
支持行级锁定
支持外键约束
支持多版本并发控制(MVCC)
支持热备份和恢复
(2)锁表
InnoDB锁定表格时,会对表格中的行进行锁定,而不是锁定整个表格。这样可以避免锁定整个表格而导致其他事务无法访问的问题,同时也可以提高并发访问效率。
(3)生产场景
nnoDB是MySQL数据库管理系统中的一种事务型存储引擎,适用于各种生产场景,特别是需要高并发访问和事务支持的应用场景,InnoDB适用于各种需要高并发访问和事务支持的生产场景,能够提高数据库的性能和效率,保证数据的安全性和可靠性。
五、存储引擎的管理
1.死锁问题
原因:当两个请求分别访问/读取2行记录,同时又需要读取对方的记录数据,因为(行锁的限制)而造成了阻塞的现象
解决:查看哪个用户在使用,关闭使用
2.企业选择存储引擎依据
企业在选择数据库存储引擎时,应该根据以下因素进行评估和选择:
-
业务需求:企业需要根据具体业务需求来选择存储引擎,例如需要事务支持、高并发访问、大数据量处理等,不同的存储引擎都有其适用的场景和优势。
-
数据类型:企业需要考虑自己的数据类型和特性,例如数据大小、数据结构、数据访问方式等,不同的存储引擎对数据类型和访问方式的支持也有所不同。
-
性能和可靠性:企业需要选择性能高、可靠性好的存储引擎,以提高数据库的性能和效率,同时保证数据的安全性和可靠性。
-
成本和可扩展性:企业需要考虑存储引擎的成本和可扩展性,以满足不断增长的数据存储需求和业务发展需要。
-
周边工具和支持:企业需要考虑存储引擎的周边工具和支持,例如备份和恢复工具、监控和调优工具、技术支持等,以提高数据库的管理和维护效率。
-
综上所述,企业在选择数据库存储引擎时,需要根据具体业务需求、数据类型、性能和可靠性、成本和可扩展性以及周边工具和支持等因素进行评估和选择,以满足业务需求和提高数据库的性能和效率。
3.MyISAM和InnoDB 区别
-
事务支持:MyISAM不支持事务,而InnoDB支持事务,可以保证数据操作的原子性、一致性、隔离性和持久性。
-
锁定机制:MyISAM使用表级锁定,即在对整个表格进行锁定时,其他事务无法访问该表格;而InnoDB使用行级锁定,即只锁定需要修改的行,其他事务可以并发访问其他行。
-
并发性能:MyISAM的并发性能较低,因为它使用表级锁定,对整个表格进行锁定时,其他事务无法访问该表格;而InnoDB使用行级锁定,可以提高并发访问效率,同时保证数据的一致性和可靠性。
-
数据完整性:MyISAM不支持外键,无法保证数据的完整性;而InnoDB支持外键,可以保证数据的完整性和一致性。
-
索引机制:MyISAM使用B+树索引,支持全文索引和空间索引;而InnoDB使用B+树索引,支持自适应哈希索引和全文索引。
-
备份和恢复:MyISAM支持快速备份和恢复,因为它使用表格级别的锁定;而InnoDB支持在线备份和恢复,但因为使用行级锁定,备份和恢复需要更多的时间和资源。
4.管理存储引擎
(1)查看系统存储引擎
show engines;
(2)查看表使用的存储引擎
show table status from hjp where name='zd'\G;
show create table zd\G;
(3)修改存储引擎
修改成功
通过修改 /etc/my.cnf 配置文件
创建表时指定存储引擎
六、总结
存储引擎是数据库管理系统中的一种核心组件,用于管理和组织数据的存储和访问。不同的存储引擎有着不同的特性和优势,例如MyISAM和InnoDB在事务支持、锁定机制、并发性能、数据完整性、索引机制和备份恢复等方面有所区别。企业在选择存储引擎时,需要根据具体业务需求、数据类型、性能和可靠性、成本和可扩展性以及周边工具和支持等因素进行评估和选择,以满足业务需求和提高数据库的性能和效率。