一.存储引擎
1.定义
MySQL可以将数据以不同的技术存储在文件(内存)中,这种技术就称为存储引擎。
每一种存储引擎使用不同的存储机制,索引技巧,锁定水平,最终提供广泛且不同的功能。
2.MySQL支持的存储引擎
- MyISAM
- InnoDB
- Memory
- CSV
- Archive
各种存储引擎的特点:
特点 | MyISAM(最常用) | InnoDB(最常用) | Memory | Archive |
存储限制 | 256TB | 64TB | 有(由内存决定) | 无 |
事务安全 | - | 支持 | - | - |
支持索引 | 支持 | 支持 | 支持 | - |
锁颗粒 | 表锁 | 行锁 | 表锁 | 行锁 |
数据压缩 | 支持 | - | - | 支持 |
支持外键 | - | 支持 | - | - |
(1)并发控制:当多个连接对记录进行修改时,保证数据的一致性和完整性。
(2)锁分类
共享锁(读锁):共享,互不阻塞。在同一时间段内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。
排他锁(写锁):在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。
加锁只加最对的,而不是最大的。加锁会增加系统的开销。
(3)锁颗粒
表锁,是一种开销最小的锁策略;(一张表只能有一个锁。)
行锁,是一种开销最大的锁策略。(一个比表有多少条数据,则有可能有多少个锁。)
(4)事务:事务用于保护数据库的完整性。
事务特性:
原子性(Atomicity)
一致性(Consistency)
隔离性(Isolation)
持久性(Durability)
(5)外键:是保证数据一致性的策略。
(6)索引: 是对数据表中一列或多列的值进行排序的一种结构。
- 普通索引
- 唯一索引
- 全文索引
- btree索引
- hash索引
3.修改存储引擎的方法
(1)通过修改MySQL配置文件实现:default-storage-engine = engine
(2)通过创建数据表命令实现
语法:CREATE TABLE table_name(...) ENGINE = engine;
# 创建数据表,并将引擎设置为MyISAM
CREATE TABLE tbl_engine_test ( NAME VARCHAR ( 40 ) ) ENGINE = MyISAM;
使用命令:SHOW CREATE TABLE tbl_engine_test; 查看创建数据表的引擎。
(3)通过修改数据表命令实现
语法:ALTER TABLE table_name ENGINE [ = ] engine_name;
# 修改数据表,并将引擎修改为INNODB
ALTER TABLE tbl_engine_test ENGINE = INNODB;
修改后使用命令:SHOW CREATE TABLE tbl_engine_test; 再次查看创建数据表的引擎。