代码改变世界

MySQL存储引擎

2018-08-17 22:19  親親宝贝  阅读(203)  评论(0编辑  收藏  举报
什么是存储引擎?
存储引擎就是一套程序,负责将用户的表示层(sql语句)数据转换成物理层(数据库数据文件)数据的一套程序。
 
MySQL是插件式的存储引擎. 什么是插件式存储引擎?
MySQL为了支持更灵活的架构,它把存储引擎做成一个插件式的,任何第三方都可以开发自己的插件,
来用于存储引擎完成从表示层到物理层,或物理层到表示层的双向转换。
因此MySQL拥有多种不同的存储引擎,不同的存储引擎所支持的特性是不一样的,
有的存储引擎支持事务,有的则不支持等等。MySQL支持我们自由选择所使用的存储引擎,但Oracle不支持。
 
MySQL的两个比较常见的存储引擎
存储引擎也被称为表类型
SHOW ENGINES; # 查看当前数据库支持的所有存储引擎
SHOW TABLE STATUS LIKE '表名'\G # 可以查看到一张表的属性信息,可以看到这张表是什么存储引擎

MyISAM存储引擎(无事务,表锁):

    MySQL5.5.8之前默认存储引擎
    不支持事务
    MyISAM性能比较好,特别适用于查询比较多,而修改比较少的场景,所以特别适合数据存储。
    每表三个文件
        .frm: 表结构
        .MYD: 表数据
        .MYI: 表索引
 
InnoDB存储引擎(事务,行锁):
    MySQL5.5.8之后,Oracle收购MySQL之后,默认的存储引擎
    支持事务 
    InnoDB特别适用于在线事务处理系统(查询和修改都比较多),比如论坛(随时有人发帖,有人看帖)
    所有表共享一个表空间文件(不推荐)
    建议: 每表一个独立的表空间文件
        .frm: 表结构
        .idb: 表空间(表数据和表索引)
 
 
使用InnoDB引擎要做的事情
# 每表一个独立的表空间文件(推荐)
innodb_file_per_table
# 设置InnoDB表空间文件的存储路径
innodb_data_home_dir="D:/MySQL5.5/InnoDB"

 

 
db.opt是什么?
我们发现,每个数据库中都存在一个db.opt的文件,它是一个ASCII text文件,它定义了这个数据库使用的字符集和排序规则
它的内容类似下面这样
default-character-set=gbk
default-collation=gbk_chinese_ci