Mysql数据库优化一(存储引擎)

前言

数据库优化是一个老生常谈的问题,刚入门的小白或者工作N年的光头对这个问题应该都不陌生,你要面试一个中级工程师那么他就想"哥俩好"一样那么粘,面试官肯定会问这个问题,这篇文章我们就和它哥俩好!而且这个问题就是一个送分题,数据库的优化方案基本就是那些,答案也都是固定的,大家只要好好准备这个问题就不会住你,可以在面试中安排面试官,不然就被面试官安排!话不多说下边就针对数据库优化展开讲!

相关文章

Mysql数据库优化二(数据库设计)
Mysql数据库优化三(SQL优化)

存储引擎

介绍

数据库存储引擎是数据库底层组件,数据库管理系统使用数据引擎进行创建、查询、更新和删除数据操作。不同的存储引擎提供不同的存储机制、索引技巧、锁定水平等功能,使用不同的存储引擎还可以获得特定的功能。我们可以通过SHOW ENGINES
在这里插入图片描述

InnoDB存储引擎

InnoDB越做越好从MySQL5.5版本之后,MySQL的默认内置存储引擎已经是InnoDB,主要特点有

  • 容灾恢复性比较好
  • 支持事务,默认事务隔离界别为可重复读
  • 使用的锁粒度为行锁,可以支持更高的并发
  • 支持外键
  • 配合一些热备工具可以支持在线热备份
  • 在InnoDB中存在着缓冲管理,通过缓冲池,将索引和数据全部缓存起来,加快查询的速度
  • 对于InnoDB类型的表,其数据的物理组织形式是聚簇表。所有的数据按照主键来组织。根据主键进行排序,数据和索引放在一块,都位于B+数的叶子节点上

MyISAM存储引擎

MyISAM引擎是MySQL关系数据库系统的默认储存引擎(mysql 5.5.5之前)。这种MySQL表存储结构从旧的ISAM代码扩展出许多有用的功能。在新版本的Mysql中,Innodb引擎由于其对事务参照完整性,以及更高的并发性等优点开始逐步取代Myisam引擎。

  • 不支持事务
  • 表级锁定
  • 读写互相阻塞:不仅会在写入的时候阻塞读取,myisam还会在读取的时候阻塞写入,但读本身并不会阻塞另外的读。
  • 只会缓存索引:myisam可以通过key_buffer_size缓存索引,以大大提高访问性能,减少产品IO,但是这个缓存区只会缓存索引,而不会缓存数据。
  • 读取速度较快,占用资源相对少
  • 不支持外键约束,但支持全文索引

MEMORY存储引擎

MEMORY是MySQL中一类特殊的存储引擎。它使用存储在内存中的内容来创建表,而且数据全部放在内存中。这些特性与前面的两个很不同。

  • 支持 HASH 索引和 BTree 索引( MyISAM 与 InnoDB 只支持 BTree 索引)
  • 所有字段都为固定长度 varchar(10)=char(10)
  • 不支持 BLOB 和 TEXT 等大字段,因为它的数据是存储在内存当中,不宜过大
  • Memory 存储引擎使用 表级锁

ARCHIVE存储引擎

ARCHIVE存储引擎适合的场景有限,由于其支持压缩,故主要是用来做日志,流水等数据的归档,主要特点有

  • 支持Zlib压缩,数据在插入表之前,会先被压缩
  • 仅支持SELECT和INSERT操作,存入的数据就只能查询,不能做修改和删除;
  • 只支持自增键上的索引,不支持其他索引

CSV存储引擎

数据中转试用,主要特点有

  • 其数据格式为.csv格式的文本,可以直接编辑保存
  • 导入导出比较方便,可以将某个表中的数据直接导出为csv,试用Excel办公软件打开

选择依据

如果没有特殊需求默认使用InnoDB引擎即可

MyISAM:以读写插入为主的应用程序,比如博客系统、新闻门户网站。

Innodb:更新(删除)操作频率也高,或者要保证数据的完整性;并发量高,支持事务和外键保证数据完整性。比如OA自动化办公系统

另外推荐小伙伴们积极参加:C站测评挑战赛

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Monster_起飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值