MYSQL-存储引擎
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MYSQL-存储引擎相关的知识,希望对你有一定的参考价值。
前言: 存储引擎决定了数据库最终以什么方式将数据存储
mysql版本5.5之前用的是 MyISAM 存储引擎
MySQL版本5.5之后用的是InnoDB 存储引擎
在数据库中可以使用 show engines; 命令查看当前数据库的存储引擎
MyISAM:
1、拥有更好的性能,读取速度较快,占用资源较少
2、锁的并发性
对整个表加锁,访问不同的表互不影响,访问相同的表冲突,并发性差
3、读写相互阻塞,写入时不能读,读时不能写
并发性差
4、数据的缓存
只缓存索引意味着,当用户查询数据时候,没有使用索引功能的话,就不会缓存到缓存区内,查询速度缓慢
5、不支持外键约束
6、不支持聚簇索引
7、不支持MVCC
8、崩溃恢复性差
9、数据压缩
仅仅在行的格式的时候进行数据压缩
10、不支持事务
InnoDB:
1、锁的并发性
行级锁,并发性高
2、支持事务,适合处理大量短期事务
3、读写阻塞与事务隔离级别相关
4、可缓存数据和索引
5、支持聚簇索引
6、崩溃恢复性更好
7、支持MVCC高并发
8、从MySQL5.5后支持全文索引
9、从MySQL5.5.5开始为默认的数据库引擎
10、数据压缩
支持任何格式的数据压缩,节省空间
MVCC
MVCC(),允许多个用户并发访问,互不干扰
比如student表
事件ID 递增,先发生的小,后发生的大
说明:
我们在不同的时间段进行添加数据,所以,inster中的事件ID也不同
当我们进行删除的时候,比如删除A记录,事件ID为150,
当我们修改的时候,其实系统做了两个操作,先删除后添加,所以两个字段的事件ID相同
当用户对这个表进行查询的时候,我们在280事件ID执行的,我们可以查询到
Bb这条修改之后的记录
MyISAM存储引擎适用场景
只读(或者写较少)、表较小(可以接受长时间进行修复操作)
MyISAM引擎文件
tbl_name.frm 表格式定义
tbl_name.MYD 数据文件
tbl_name.MYI 索引文件
MariaDB [hellodb]> show table status like ‘students‘\G; 查询表的引擎
注意:
而InnoDB引擎文件全部存放在数据文件中的ibdata1一个文件之中,这显然会给数据管理带来麻烦
我们可以设置选项,让Innodb引擎也可以分开存放
新版本已经自动设置问启动
旧版本默认是OFFmysqladmin -uroot -pcentos variables | grep ‘innodb_file_per_table‘
管理存储引擎
1、查看mysql支持的存储引擎show engines;
2、查看当前默认的存储引擎show variables like ‘%storage_engine%‘;
3、设置默认的存储引擎
vim /etc/my.conf
[mysqld]
default_storage_engine= InnoDB
4、查看库中所有表使用的存储引擎show table status from db_name;
5、查看库中指定表的存储引擎
show table status like ‘ tb_name ‘;
show create table tb_name;
6、设置表的存储引擎:
CREATE TABLE 表名 ENGINE=InnoDB;
ALTER TABLE tb_name ENGINE=InnoDB;
以上是关于MYSQL-存储引擎的主要内容,如果未能解决你的问题,请参考以下文章