MySQL存储引擎

定义

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

常用的MySQL存储引擎

InnoDB

InnoDB 是 MySQL 默认的事务型存储引擎,只有在需要 InnoDB 不支持的特性时,才考虑使用其它存储引擎。

采用 MVCC 来支持高并发,并且实现了四个标准的隔离级别,默认级别是可重复读。

表是基于聚簇索引建立的,它对主键的查询性能有很高的提升。

内部做了很多优化,包括从磁盘读取数据时采用的可预测性读、能够自动在内存中创建哈希索引以加速读操作的自适应哈希索引、能够加速插入操作的插入缓冲区等。

通过一些机制和工具支持真正的热备份。

MyISAM

MyISAM 提供了大量的特性,包括全文索引、压缩、空间函数(GIS)等。但 MyISAM 不支持事务和行级锁,而且崩溃后无法安全恢复。

只能对整张表加锁,而不是针对行。

可以手工或者自动执行检查和修复操作,但是和事务恢复以及崩溃恢复不同,可能导致一些数据丢失,而且修复操作是非常慢的。

可以包含动态或者静态的行。

如果指定了 DELAY_KEY_WRITE 选项,在每次修改执行完成时,不会立即将修改的索引数据写入磁盘,而是会写到内存中的键缓冲区,只有在清理键缓冲区或者关闭表的时候才会将对应的索引块写入磁盘。这种方式可以极大的提升写入性能,但是在数据库或者主机崩溃时会造成索引损坏,需要执行修复操作。

如果表在创建并导入数据以后,不会再进行修改操作,那么这样的表适合采用 MyISAM 压缩表。

对于只读数据,或者表比较小、可以容忍修复操作,则依然可以继续使用 MyISAM。

MyISAM 设计简单,数据以紧密格式存储,所以在某些场景下性能很好。

比较

  1. 事务:InnoDB 是事务型的。
  2. 备份:InnoDB 支持在线热备份。
  3. 崩溃恢复:MyISAM 崩溃后发生损坏的概率比 InnoDB高很多,而且恢复的速度也更慢。
  4. 并发:MyISAM 只支持表级锁,而 InnoDB 还支持行级锁。
  5. 其它特性:MyISAM 支持全文索引,地理空间索引。

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

在CentOS 6上使用Postfix,Dovecot和MySQL发送电子邮件

Postfix 邮件传输代理(MTA)是一种高性能的开源电子邮件服务器系统。本指南将帮助你在CentOS 6 Linode上运行 Postfix,使用 Dove...

3195
来自专栏Linyb极客之路

Mysql慢查询日志的使用 和 Mysql的优化

1、临时开启慢查询日志(如果需要长时间开启,则需要更改mysql配置文件,第6点有介绍)

1132
来自专栏技术博文

mysql导出select结果到文件

mysql -hxx -uxx -pxx -e "query statement" db > file  例如:  mysql -h127.0.0.1 -uro...

3734
来自专栏码农二狗

慎用replace into

2373
来自专栏pangguoming

MyBatis两张表字段名相同产生的问题

MyBatis两张表字段名相同, 会导致bean属性都映射为第一个表的列, 解决方法: 通过设置别名的方式让其产生区别,如 <select id="queryB...

4597
来自专栏喵了个咪的博客空间

原 EMQ百万级MQTT消息服务(ACL鉴权)

虽然EMQ已经搭建起来了,但是投入到业务使用中还面临着一些问题,当然MQTT设计之初也考虑了这一点,比如不是任何一个客户端都能链接到服务器和限制客户端能够对to...

5384
来自专栏别先生

主要是解决,作为一个数据共享的数据库,存在的数据库统计,然后将计算的数据量输出到自己使用的数据库,进行主页面展示。

1、主要是解决,作为一个数据共享的数据库,存在的数据库统计,然后将计算的数据量输出到自己使用的数据库,进行主页面展示。

952
来自专栏架构之路

mysql 通过慢查询日志查写得慢的sql语句

MySQL通过慢查询日志定位那些执行效率较低的SQL 语句,用--log-slow-queries[=file_name]选项启动时,mysqld 会写一个包含...

3634
来自专栏云计算教程系列

在Ubuntu 16.04上安装和配置MySQL Workbench

MySQL Workbench是一个功能丰富的图形工具,用于建模数据,构建SQL查询,管理MySQL服务器等。本教程将向您展示如何使用Ubuntu软件包管理器安...

1384
来自专栏散尽浮华

mysql操作命令梳理(4)-grant授权和revoke回收权限

在mysql维护工作中,做好权限管理是一个很重要的环节。下面对mysql权限操作进行梳理: mysql的权限命令是grant,权限撤销的命令时revoke; g...

2795

扫码关注云+社区

领取腾讯云代金券