mysql进阶知识-存储引擎
”种一棵树最好是十年前,其次是现在“,结合个人十多年IT基础架构领域摸爬滚打的经验来看,数据库领域潜力无限,大有可为。运维领域知识面需要广,更需要专,数据库是我选择做专做深的方向。
本篇文章以结构化的方式呈现mysql进阶知识的体系框架,并且通过通俗易懂的语言,方便大家更好的阅读和理解。
进阶知识概览
存储引擎
-
存储引擎:
数据存储,索引建立,更新,查询数据等问题都是通过存储引擎实现
-
体系结构:
通过连接层,服务层,引擎层,和数据存储层构成了mysql整体结构
连接层:
负责连接认证,线程重用,连接数控制等
服务层:
负责SQL接口,SQL解析,查询优化,缓存处理等
引擎层:
5.5版本以后默认使用InnoDB,支持可插拔存储引擎,索引实现。不用的引擎使用的场景不同,索引实现的方式也不同
数据存储层:
负责数据库中数据,log日志文件存储在磁盘中,支持多种文件系统格式
相关操作:
-- 查询建表语句
show create table account;
-- 建表时指定存储引擎
CREATE TABLE 表名(
...
) ENGINE=INNODB;
-- 查看当前数据库支持的存储引擎
show engines;
常用存储引擎特点
-
存储引擎特点-InnoDB: -
DML操作支持ACID模型,支持事务 -
行级锁,并发性能高 -
支持外键约束,保证数据完整,正确 -
5.5版本默认的InnoDB具有高性能,高可靠性特点 -
文件:xxx.ibd xxx代表表名,存储表结构,数据和索引等信息
-
知识点:
参数:innodb_file_per_table,决定多张表共享一个表空间还是每张表对应一个表空间
查看 Mysql 变量:
show variables like 'innodb_file_per_table';
从idb文件提取表结构数据: (在cmd运行) ibd2sdi xxx.ibd
InnoDB 逻辑存储结构:
-
存储引擎特点-MyISAM: -
早期版本默认使用的引擎 -
表锁,不支持行锁 -
不支持外键和事务 -
访问速度快 -
文件:.sdi 存储表结构信息,.MYD 存储数据信息,.MYI 存储索引信息
-
-
存储引擎特点-Memory: -
信息存储在内存中,只适用于临时存储场景 -
内存存储,hash索引 -
文件:.sdi 存储表结构信息
-
-
各类存储引擎特性详细对比
-
存储引擎选择:
需要根据应用系统的特点来选择合适的存储引擎,甚至可以进行组合使用
适用场景:
InnoDB:适合高并发,对数据安全性要求高,有事务要求,同时增,删,改,查比较频繁的场景
MyISAM:适合应用有大量的查询和插入操作,只有少量的更新和删除操作,同时对事务,并发要求不高的场景
memory:数据存放在内存,访问速度快,数据安全性没有保证,适用于存放缓存数据
作者:谷会于(转载请获本人授权,并注明作者与出处)
本文由 mdnice 多平台发布