第九章 MySQL存储引擎

一、存储引擎

1.定义

MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。
没一种存储引擎使用不同的存储机制、索引技巧、锁定水平,最终提供广泛且不同的功能。

2.MySQL支持的存储引擎

  • MyISAM
  • InnoDB
  • Memory
  • CSV
  • Archive

3.并发控制

当多个连接对记录进行修改时保证数据的一致性和完整性。

二、锁

1.锁的分类

  1. 共享锁(读锁):在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。
  2. 排它锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

2.锁颗粒

  • 表锁:是一种开销最小的锁策略。
  • 行锁:是一种开销最大的锁策略。

三、事务

1.事务

事务用于保证数据库的完整性。
example:


事务.png

2.事务的特性

  • 原子性(Atomicity)
  • 一致性(Consistency)
  • 隔离性(Isolation)
  • 持久性(Durability)

四、外键

1.外键

是保证数据一致性的策略。

五、索引

1.索引

是对数据表中一列或多列的值进行排序的一种结构。

2.分类

  • 普通索引
  • 唯一索引
  • 全文索引
  • btree索引
  • hash索引
  • ......

六、各种存储引擎的特点

特点 MyISAM InnoDB Memory Archive
存储限制 256TB 64TB
事务安全 - 支持 - -
支持索引 支持 支持 支持
锁颗粒 表锁 行锁 表锁 行锁
数据压缩 支持 - - 支持
支持外键 - 支持 - -

七、Note

  • CSV存储引擎不支持索引
  • BlackHole:黑洞引擎,写入的数据都会消失,一般用于做数据复制的中继。
  • MyISAM:适用于事务的处理不多的情况。
  • InnoDB:适用于事务处理比较多,需要有外键支持的情况。

八、修改存储引擎的方法

  1. 通过修改MySQL配置文件实现
    -default-storage-engine = engine
  2. 通过创建数据表命令来实现
    -CREATE TABLE table_name (
    ...
    ...
    ) ENGINE = engine;
  3. 通过修改数据表命令实现
    -ALTER TABLE table_name ENGINE [=] engine_name;
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容