MySQL-存储引擎基础

1.存储引擎认识及相关知识

1.1存储引擎概念:

官方定义:将数据以不同的技术存储在文件(内存)中,该技术即为存储引擎,也称为表类型。每种存储引擎使用不同的存储机制、索引技巧及锁定水平。简单讲,存储引擎是存储数据,查询数据的技术。

1.2相关知识

.并发:之前的认识一直比较片面:并发即是同时有很多对象进行相同/类似操作,此时观察系统的反应:响应时间,资源分配,还有一层含义:
多个对象对同一数据进行修改操作。
.并发控制:多个连接(对象)对数据进行修改操作,保证数据的一致性和完整性的技术。用的技术是锁:分共享锁(读锁),排他锁(写锁)。
.共享锁和排他锁:共享锁,允许同一时间可以多个连接读取资源;
排他锁,在对某一数据进行写 操作时,会禁止其他连接进行操作,有排他性。锁也会消耗资源,所以,用排他锁时,要锁最小的,不是最大的,比如:对某条记录进行修改,只锁定该条记录,而不是锁整张表。
.锁策略:表级锁:一张表就一个锁,所以是最小开销锁;
行级锁:表中记录很多,一行一个锁,会有很多,所以,是最大开销锁。
.事务:目的是保证数据的完整性。
特性: 1.原子性(Atomicity):处于同一事务中的多条语句不可分割;
2.一致性(Consistency):必须使DB从一个一致性状态变换到另外一个一致性状态;
3.隔离型(Isolation):多线程环境下,一个线程中的事务不能被其他线程中事务打扰;
4.持久性(Durability):事务一旦提交,应该被永久保存。
.脏读、幻读、虚读:
脏读:一个线程中事务读取到另外一个线程中未提交的数据,简单说一个事务修改了记录数据,但还未提交,但此时另一个事务读取了该记录,导致读到脏数据。
幻读:当一个线程修改整张表中所有数据时,此时另一个线程往表中插入了数据,导致第一个线程用户发现处理表中数据还有未修改数据,即是幻读。简单讲,一个事务的更新操作被另一个事务更新操作覆盖,导致数据不一致。
虚读:又称不可重复读,指在一个事务内多次读取同一数据集合,发生了事务读取不一致情况。由于查询时系统中其他事务修改的提交而引起的。比如:事务T1读取某一数据,事务T2读取并修改了该数据,T1为了对读取值进行校验而再次读取该数据,便得到了不同结果。
虚读和幻读区别:从结果上看,两者都表现为 两次读取的结果不一致,但从控制角度:虚读,只需要锁住满足条件的记录;幻读,只要锁住满足条件及其相近的记录。
总结:不可重复读侧重于修改;
幻读侧重于新增和删除;
解决不可重复读问题只需要锁住满足条件的行,解决幻读需要锁表。
索引:对数据表中一列或多列的值进行排序的一种结构。可以快速访问数据表中特定信息。通常比喻成书中目录。
外键:保证数据一致性的策略。

2.存储引擎分类

MyISAM
InnnoDB
Memory
CSV
Archive

3.存储引擎特点:

特点

猜你喜欢

转载自www.cnblogs.com/dLarger/p/12929575.html