MySQL 存储引擎
1 MySQL存储引擎简介
查看数据表的创建命令:
SHOW CREATE table tbl_name
存储引擎
MySQL 可以将数据以不同的技术存储在文件(内存)中,
这种技术就称为存储引擎。
每一种存储引擎使用不同的存储机制、索引技巧、锁定水
平,最终提供广泛且不同的功能。
MySQL支持的存储引擎
- MyISAM
- InnoDB
- Memory
- CSV
- Archive
2 MySQL 相关知识点之并发处理
相关知识点
-
并发控制
- 当多个连接对记录进行修改时保证数据的一致性和完整性。
-
锁
-
共享锁(读锁) : 在同一时间段内,多个用户可以读取同一个资源,
读取过程中数据不会发生任何变化。
-
排他锁(写锁) : 在任何时候只能有一个用户写入资源,当进行写锁
时会阻塞其他的读锁或者写锁操作。
-
锁颗粒
- 表锁,是一种开销最小的锁策略。
- 行锁,是一种开销最大的所策略。
-
3 MySQL 相关知识点之事务处理
事务的特性:
- 原子性(Atomicity)
- 一致性(Consistency)
- 隔离性(Isolation)
- 持久性(Durability)
4 MySQL 相关知识点之外键和索引
- 外键:
保证数据一致性的策略
-
索引:
是对数据表中一列或多列的值进行排序的一种结构。
5 MySQ L各个存储引擎特点
索引:普通索引、唯一索引、全文索引、btree索引、hash索引......
CSV 存储引擎实际上是由逗号,分割的存储引擎,他会在数据库的子目录里面,为每一个表来创建一个.csv的文件
这是一种普通的文本文件,每一个数据行占用一个文本行。
CSV 的存储引擎不支持索引
BlackHole : 黑洞引擎,写入的数据都会消失,一般用于做数据复制的中继。
MyISAM : 适用于事务的处理不多的情况。
InnoDB : 适用于事务处理比较多,需要有外键支持的情况。
6 设置存储引擎
6.1 修改存储引擎的方法
-
通过修改MySQL配置文件实现
- default-storage-engine = engin
-
通过创建数据表命令实现
-
CREATE TABLE table_name(
…
…
)ENGINE = engine;
-
mysql> CREATE TABLE tp1(
-> s1 VARCHAR(10)
-> )ENGINE = MyISAM;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW CREATE TABLE tp1;
+-------+-------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------+
| tp1 | CREATE TABLE `tp1` (
`s1` varchar(10) DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)
-
通过修改数据表命令实现
ALTER TABLE table_name ENGINE [=] engine_name;
mysql> ALTER TABLE tp1 ENGINE = InnoDB;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> SHOW CREATE TABLE tp1;
+-------+-------------------------------------------------------------------------------------------+
| Table | Create Table |
+-------+-------------------------------------------------------------------------------------------+
| tp1 | CREATE TABLE `tp1` (
`s1` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8 |
+-------+-------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)