MySQL存储引擎
来源:互联网 发布:淘宝商品佣金查询 编辑:程序博客网 时间:2024/06/16 09:23
写这篇文章之前,看了好多关于存储引擎的文章,算是集大家的看法和我自己的一点想法,我们共勉!
关于存储引擎的命令:
1.查看当前默认引擎:
show variables like ‘default_storage_engine’;
2.列出当前数据库所支持到引擎:
show engines;
3.查询哪些存储引擎支持事物处理:
select engine from information_chema.engines where transactions = ‘yes’;
4.查看所有表的引擎:
show table status from DBname;
5.查看所有表的引擎信息:
show table status like ‘t_i%’\G;
6.设置当前会话的默认存储引擎:
SET storage_engine=InnoDB;
7.修改表的存储引擎
ALTER TABLE t_name ENGINE = innodb;
1.存储引擎是什么?
官方定义:
数据库存储引擎是数据库底层软件组织,数据库管理系统(DBMS)使用数据引擎进行创建、查询、更新和删除数据。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎,还可以 获得特定的功能。
我的理解:
一辆汽车的引擎是它的发动机,你可以把兰博基尼的发动机改装在你的车上,也可以把国产的吉利汽车的发动机改装在你的车上。无论你用那一台发动机,这辆车都是可以跑起来的。区别就是:兰博基尼的发动机动力更强,但是更费油,发动机更贵;吉利的动力弱,质量差一点,但是省油,价格便宜。所以要根据你的实际需求去选择需要的那一台。MySQL存储引擎道理一样!
2.存储引擎包括哪些?
MySQL服务器的版本(我用的5.7.17)不同,存储引擎会有或大或小的变化。
查看你的MySQL中存储引擎列表:
mysql> show engines;
这是MySQL服务器列出来的,鬼子的东西看不懂,所以翻译成人话。
可以看出:
InnoDB是默认的存储引擎。
(1).InnoDB存储引擎
InnoDB是事务型数据库的首选引擎,支持事务安全表(ACID),支持行锁定和外键,InnoDB是默认的MySQL引擎。
InnoDB主要特性有:
1、InnoDB给MySQL提供了具有提交、回滚和崩溃恢复能力的事物安全(ACID兼容)存储引擎。
2、InnoDB是为处理巨大数据量的最大性能设计。它的CPU效率可能是任何其他基于磁盘的关系型数据库引擎锁不能匹敌的。
3、InnoDB存储引擎完全与MySQL服务器整合,InnoDB存储引擎为在主内存中缓存数据和索引而维持它自己的缓冲池。
4、InnoDB支持外键完整性约束,存储表中的数据时,每张表的存储都按主键顺序存放,如果没有显示在表定义时指定主键,InnoDB会为每一行生成一个6字节的ROWID,并以此作为主键。
5、InnoDB被用在众多需要高性能的大型数据库站点上。
注意:
InnoDB不创建目录,使用InnoDB时,MySQL将在MySQL数据目录下创建一个名为ibdata1的10MB大小的自动扩展数据文件,以及两个名为ib_logfile0和ib_logfile1的5MB大小的日志文件。
2.MyISAM存储引擎
1.它不支持事务,也不支持外键,尤其是访问速度快,对事务完整性没有要求或者以SELECT、INSERT为主的应用基本都可以使用这个引擎来创建表。
每个MyISAM在磁盘上存储成3个文件,其中文件名和表名都相同,但是扩展名分别为:
.frm(存储表定义)
MYD(MYData,存储数据)
MYI(MYIndex,存储索引)
2.MyISAM的表还支持3种不同的存储格式:
静态(固定长度)表
动态表
压缩表
其中静态表是默认的存储格式。静态表中的字段都是非变长字段,这样每个记录都是固定长度的,这种存储方式的优点是存储非常迅速,容易缓存,出现故障容易恢复;缺点是占用的空间通常比动态表多。静态表在数据存储时会根据列定义的宽度定义补足空格,但是在访问的时候并不会得到这些空格,这些空格在返回给应用之前已经去掉。同时需要注意:在某些情况下可能需要返回字段后的空格,而使用这种格式时后面到空格会被自动处理掉。
动态表包含变长字段,记录不是固定长度的,这样存储的优点是占用空间较少,但是频繁到更新删除记录会产生碎片,需要定期执行OPTIMIZE TABLE语句或myisamchk -r命令来改善性能,并且出现故障的时候恢复相对比较困难。
压缩表由myisamchk工具创建,占据非常小的空间,因为每条记录都是被单独压缩的,所以只有非常小的访问开支。
3.MEMORY
memory使用存在内存中的内容来创建表。每个MEMORY表实际对应一个磁盘文件,格式是.frm。MEMORY类型的表访问非常快,因为它到数据是放在内存中的,并且默认使用HASH索引,但是一旦服务器关闭,表中的数据就会丢失,但表还会继续存在。
4.MERGE
merge存储引擎是一组MyISAM表的组合,这些MyISAM表结构必须完全相同,MERGE表中并没有数据,对MERGE类型的表可以进行查询、更新、删除的操作,这些操作实际上是对内部的MyISAM表进行操作。
3.如何选择存储引擎
注意:
一个数据库中多个表可以使用不同引擎以满足各种性能和实际需求,使用合适的存储引擎,将会提高整个数据库的性能。
- 【MySQL】MySQL存储引擎
- 【MySQL】MySQL存储引擎
- mysql federated存储引擎引擎
- MySQL的存储引擎
- 1.5. MySQL存储引擎
- mysql存储引擎
- MySQL 存储引擎
- MySQL存储引擎
- Mysql的存储引擎
- MySQL存储引擎
- MySQL存储引擎-应用
- mysql存储引擎
- MySQL存储引擎认知
- MySQL存储引擎选择
- mysql archive存储引擎
- MySQL存储引擎
- Mysql数据库存储引擎
- mysql存储引擎比较
- PCLK,VSYNC和HSYNC的关系
- 14. Longest Common Prefix
- Java 关于类型类、this.getClass()的理解
- 数位DP HDU3555+CF55D+HDU2089
- [LeetCode
- MySQL存储引擎
- 链表排序
- JAVA传入换行属性
- nyoj-20 吝啬的国度
- 搜索 G题
- LeetCode300. Longest Increasing Subsequence
- 微服务,微架构[八]springboot多环境切换profiles
- windows下mysql5.7忘记root密码后的解决方法
- Mybatis基础教程(一)