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