码迷,mamicode.com
首页 > 数据库 > 详细

MYSQL-存储引擎

时间:2019-05-09 00:47:13      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:vim   用户   选项   nes   隔离   空间   file   自动   ora   

前言:
    存储引擎决定了数据库最终以什么方式将数据存储
    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引擎也可以分开存放
新版本已经自动设置问启动
旧版本默认是OFF

mysqladmin -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-存储引擎

标签:vim   用户   选项   nes   隔离   空间   file   自动   ora   

原文地址:https://blog.51cto.com/14116879/2391302

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!