您的位置:首页 > 数据库 > MySQL

MySQL存储引擎

2018-01-27 16:01 190 查看
什么是存储引擎?

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

MySQL中常用的几种存储引擎如下:

mysql> show engines;
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| Engine | Support | Comment | Transactions | XA | Savepoints |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
| InnoDB | DEFAULT | Supports transactions, row-level locking, and foreign keys | YES | YES | YES |
| MRG_MYISAM | YES | Collection of identical MyISAM tables | NO | NO | NO |
| MEMORY | YES | Hash based, stored in memory, useful for temporary tables | NO | NO | NO |
| BLACKHOLE | YES | /dev/null storage engine (anything you write to it disappears) | NO | NO | NO |
| MyISAM | YES | MyISAM storage engine | NO | NO | NO |
| CSV | YES | CSV storage engine | NO | NO | NO |
| ARCHIVE | YES | Archive storage engine | NO | NO | NO |
| PERFORMANCE_SCHEMA | YES | Performance Schema | NO | NO | NO |
| FEDERATED | NO | Federated MySQL storage engine | NULL | NULL | NULL |
+--------------------+---------+----------------------------------------------------------------+--------------+------+------------+
9 rows in set
可以在mysql的命令窗口中可以使用show engines;查看。

show variables like '%storage_engine'; //查看MySQL的默认引擎

mysql> show variables like '%storage_engine';
+----------------------------------+--------+
| Variable_name | Value |
+----------------------------------+--------+
| default_storage_engine | InnoDB |
| default_tmp_storage_engine | InnoDB |
| internal_tmp_disk_storage_engine | InnoDB |
+----------------------------------+--------+
3 rows in set

设置存储引擎

通过修改MySQL配置文件实现- default-storage-engine = engine
通过创建数据表命令来实现- CREATE TABLE tbl_name(......) ENGINE = engine;
通过修改数据表命令实现- ALTER TABLE tbl_name ENGINE [=] engine_name;

不同存储引擎的特点如下:





详细介绍可参考:MySQL中的存储引擎讲解(InnoDB,MyISAM,Memory等各存储引擎对比)

并发控制:

当多个连接对记录进行修改时保证数据的一致性和完整性。系统使用锁系统来解决这个并发控制,这种锁分为:

1).共享锁(读锁)---在同一时间内,多个用户可以读取同一个资源,读取过程中数据不会发生任何变化。

2).排他锁(写锁)---在任何时候只能有一个用户写入资源,当进行写锁时会阻塞其他的读锁或者写锁操作。

3.锁的力度(也叫锁的颗粒)锁策略(锁定时的单位)

---表锁,是一种开销最小的锁策略。得到数据表的写锁

---行锁,是一种开销最大的锁策略。并行性最大表锁的开销最小,因为使用锁的个数最小,行锁的开销最大,因为可能使用锁的个数比较多。

事务处理:

事务处理:整个过程每一个单元全部完成才算事务处理成功,某一个单元失败事务就会回滚.

主要作用:保证数据库的完整性。

事务的特性:原子性、一致性、隔离性、持久性简称:A(Atomic)、C(Consistency)、I(Isolation)、D(Durable)

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

索引:是对数据表中一列或者多列的值进行排序的一种结构。使用索引可以快速访问数据表的特定信息。索引是进行记录快速定位的一种方法。索引好比目录。索引可以划分为:普通索引、唯一索引、全文索引。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: