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
相关推荐
lixora19 分钟前
银河麒麟高级服务器操作系统(ADM64 版)V10(SP1)搭建 Oracle 19c RAC
数据库
郝学胜-神的一滴23 分钟前
使用Linux的read和write系统函数操作文件
linux·服务器·开发语言·数据库·c++·程序人生·软件工程
哲Zheᗜe༘36 分钟前
了解学习MySQL数据库基础
数据库·学习·mysql
咋吃都不胖lyh1 小时前
MySQL 多表查询中,联合查询(UNION) 和子查询
mysql·数据分析
Miqiuha1 小时前
sql的表join怎么学?
数据库·sql
TiAmo zhang1 小时前
调查问卷管理系统开发 │ 系统功能概述
数据库·sqlserver
problc1 小时前
PostgreSQL pg_trgm中文模糊匹配优化技巧
数据库·postgresql
我真的是大笨蛋2 小时前
Redis的String详解
java·数据库·spring boot·redis·spring·缓存
lwprain2 小时前
图数据库neo4j desktop2.0初探
数据库·neo4j
先鱼鲨生2 小时前
【MySQL】认识数据库以及MySQL安装
数据库·mysql