黄东旭解析 TiDB 的核心优势
1218
2023-11-24
什么是存储引擎?
存储引擎定义
存储引擎是一种软件层,它提供了一组用于管理存储在计算机上的数据的方法。存储引擎通常被用作数据库管理系统中的一部分。
存储引擎的作用
存储引擎的作用是将数据库的数据存储到磁盘上,并且提供一种管理这些数据的方法。存储引擎使数据库的管理者可以对数据库中的数据进行查询、更新、插入和删除操作。存储引擎还可以提供数据一致性和事务支持等功能。
不同存储引擎的区别
不同的存储引擎有不同的特点,也有不同的优缺点。例如,MyISAM是一种常用的存储引擎,但它不支持事务操作。而InnoDB存储引擎则支持事务操作,并且提供了更好的数据一致性和并发性能。此外,InnoDB存储引擎也提供了一些额外的功能,例如外键、行级锁和长事务支持。
如何选择存储引擎
在选择存储引擎时,需要考虑数据库的需求和优先级,例如读写比例、事务操作、并发性能和数据一致性等。如果数据库主要用于读操作,可以选择MyISAM等性能较好、而且不需要事务支持的存储引擎;如果需要支持事务操作和更好的数据一致性,可以选择InnoDB等存储引擎。
存储引擎的优化方法
存储引擎的性能不仅取决于存储引擎本身的特点,还受到数据库服务器的影响。因此,要优化存储引擎性能,需要考虑优化数据库服务器的硬件和软件环境,例如增加内存、优化查询语句和索引等。此外,还可以通过调整存储引擎的参数来优化存储引擎的性能,例如调整缓存大小和数据页的大小等。
存储引擎的发展趋势
随着计算机技术的不断发展,存储引擎也在不断地发展和改进。未来的存储引擎将更加注重性能和效率,同时也会提供更多的数据一致性保证和事务支持。目前,NoSQL和NewSQL等新型数据库技术也在发展中,它们也包含了不同的存储引擎,未来存储引擎的细分也将更加多样化。
存储引擎的概念及作用
一. 存储引擎介绍
1. 什么是存储引擎
数据库最核心的一点就是用来存储数据,数据存储就避免不了和磁盘打交道。那么数据以哪种方式进行存储,如何存储是存储的关键所在。所以存储引擎就相当于是数据存储的发动机,来驱动数据在磁盘层面进行存储。不同的存储引擎功能差别很大。各位小伙伴不要着急,下面我们逐一道来。
查看存储引擎:
2. InnoDB存储引擎
特点:
InnoDB存储引擎提供了具有提交、回滚和崩溃恢复能力的事务安全。相比较MyISAM存储引擎,InnoDB写的处理效率差一点并且会占用更多的磁盘空间保留数据和索引。
提供了对数据库事务ACID(原子性Atomicity、一致性Consistency、隔离性Isolation、持久性Durability)的支持,实现了SQL标准的四种隔离级别。
设计目标就是处理大容量的数据库系统,MySQL运行时InnoDB会在内存中建立缓冲池,用于缓冲数据和索引。
执行“select count(*) from table”语句时需要扫描全表,因为使用innodb引擎的表不会保存表的具体行数,所以需要扫描整个表才能计算多少行。
InnoDB引擎是行锁,粒度更小,所以写操作不会锁定全表,在并发较高时,使用InnoDB会提升效率。即存在大量UPDATE/INSERT操作时,效率较高。
InnoDB清空数据量大的表时,是非常缓慢,这是因为InnoDB必须处理表中的每一行,根据InnoDB的事务设计原则,首先需要把“删除动作”写入“事务日志”,然后写入实际的表。所以,清空大表的时候,最好直接drop table然后重建。即InnoDB一行一行删除,不会重建表。
使用场景:
经常UPDETE/INSERT的表,使用处理多并发的写请求。
支持事务,必选InnoDB。
可以从灾难中恢复(日志+事务回滚)。
外键约束、列属性AUTO_INCREMENT支持。
3. MyISAM存储引擎
特点:
MyISAM不支持事务,不支持外键,SELECT/INSERT为主的应用可以使用该引擎。
每个MyISAM在存储成3个文件,扩展名分别是:
frm:存储表定义(表结构等信息)。
MYD(MYData),存储数据。
MYI(MYIndex),存储索引。
不同MyISAM表的索引文件和数据文件可以放置到不同的路径下。
MyISAM类型的表提供修复的工具,可以用CHECK TABLE语句来检查MyISAM表健康,并用REPAIR TABLE语句修复一个损坏的MyISAM表。
在MySQL5.6以前,只有MyISAM支持Full-text全文索引。
使用场景:
经常SELECT/INSERT的表,插入不频繁,查询非常频繁。
不支持事务。
做很多count 的计算。
4. MyISAM和Innodb区别
下面给各位小伙伴梳理下,敲黑板啦,重点来啦。
InnoDB和MyISAM是许多人在使用MySQL时最常用的两个存储引擎,这两个存储引擎各有优劣,视具体应用而定。基本的差别为:MyISAM类型不支持事务处理,而InnoDB类型支持。MyISAM类型强调的是性能,其执行速度比InnoDB类型更快,而InnoDB提供事务支持已经外部键等高级数据库功能。
具体实现的差别:
MyISAM是非事务安全型的,而InnoDB是事务安全型的。
MyISAM锁的粒度是表级,而InnoDB支持行级锁定。
MyISAM不支持外键,而InnoDB支持外键。
MyISAM相对简单,所以在效率上要优于InnoDB,小型应用可以考虑使用MyISAM。
InnoDB表比MyISAM表更安全。
二. 结语
最后在这里对本文核心要点进行总结:
MySQL最常用的存储引擎就是InnoDB和MyISAM这两个引擎。
默认的存储引擎是InnoDB支持事务、主外键关系。
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。