MySQL存储引擎

什么是存储引擎

数据库存储引擎是数据库底层软件组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。

现在许多数据库管理系统都支持多种不同的存储引擎。MySQL 的核心就是存储引擎。

在MySQL客户端中,使用以下命令可以查看MySQL支持的引擎。

mysql>show engines

1.mysql存储引擎

MyISAM 存储引擎不支持事务,也不支持外键,特点是访问速度快,对事务完整性没有要求,以 SELECT、INSERT 为主的应用基本都可以使用这个引擎来创建表。

fm(存储表定义)

MYD(MYData,存储数据)

MYI(MYIndex,存储索引)

每个 MyISAM 表都有一个标志,服务器或 myisamchk 程序在检査 MyISAM 数据表时会对这个标志进行设置。MyISAM 表还有一个标志用来表明该数据表在上次使用后是不是被正常的关闭了。

MyISAM 表还支持3种不同的存储格式:

静态(固定长度)表

动态表

压缩表

2.InnoDB存储引擎

InnoDB是一个

InnoDB 是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。

1)更新密集的表:InnoDB 存储引擎特别适合处理多重并发的更新请求。

2)事务:InnoDB 存储引擎是支持事务的标准 MySQL存储引擎。

3)自动灾难恢复:与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。

4)外键约束:MySQL 支持外键的存储引擎只有InnoDB.

5)支持自动增加列 AUTO INCREMENT 届性。

一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

3.关于myisam 与 innoDB选择使用

myisam和innoDB是MySQL数据库提供的两种存储引擎。两者的优劣各有千秋。InnoDB会支持一些关系数据库的高级功能。myisam的性能更优,占用的储存空间少。

1.如果应用程序一定要使用事务,毫无疑问要选择InnoDB 引擎。但要注意,InnoDB的行级锁是有条件的。在 where 条件没有使用主键时,照样会锁全表。比如 DELETE FROMmytable 这样的删除语句。

2.如果应用程序对查询性能要求较高,就要使用MYISAM了。MyISAM 索引和数据是分开的,而且其索引是压缩的,可以更好地利用内存。所以它的查询性能明显优于InnoDB.压缩后的索引也能节约一些磁盘空间。

4.修改默认的存储引擎

修改默认的存储引繁有四种方法,分别如下。

(1)通过alter table修改。

mysql>alter table user_info engine=myisam;

(2)通过修改my.cnf,指定默认存储引擎并重启服务。

vim my.cnf
default-storage-engine=InnoDB

(3)通过create table创建表时指定存储引擎。

mysql>create table engineTest(id int) engine=myisam;

(4)通过MySQL_convert_table_format 转化存储引擎。

yum -y install perl-DBL perl_DBD-MySQL 
/usr/local/mysql/bin/mysql_convet_table_format
--user=root --password='123456' --sock=/tmp/mysql.sock auth
相关推荐
Jacky(易小天)7 分钟前
MongoDB比较查询操作符中英对照表及实例详解
数据库·mongodb·typescript·比较操作符
Karoku0661 小时前
【企业级分布式系统】ELK优化
运维·服务器·数据库·elk·elasticsearch
小技与小术2 小时前
数据库表设计范式
数据库·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验三 数据操作
运维·服务器·数据库·sql·mysql
安迁岚2 小时前
【SQL Server】华中农业大学空间数据库实验报告 实验九 触发器
数据库·sql·mysql·oracle·实验报告
Loganer2 小时前
MongoDB分片集群搭建
数据库·mongodb
LKID体2 小时前
Python操作neo4j库py2neo使用之创建和查询(二)
数据库·python·neo4j
刘大浪3 小时前
后端数据增删改查基于Springboot+mybatis mysql 时间根据当时时间自动填充,数据库连接查询不一致,mysql数据库连接不好用
数据库·spring boot·mybatis
一只爱撸猫的程序猿3 小时前
简单实现一个系统升级过程中的数据平滑迁移的场景实例
数据库·spring boot·程序员
无敌岩雀3 小时前
MySQL中的索引
数据库·mysql