MySQL存储写入速度慢?当然是选择分析一下啦

数据库 MySQL 存储软件
在 MySQL 中执行 SQL 语句,比如 insert,贼慢,明明可能也就只是一行数据的插入,数据量很小,但是耗费的时间却很多,为什么?

 [[215759]]

问题背景描述:   

在 MySQL 中执行 SQL 语句,比如 insert,贼慢,明明可能也就只是一行数据的插入,数据量很小,但是耗费的时间却很多,为什么?

一、存储结构分析

MySQL 存储结构图:

解析:

1、读操作:内存读 -->cache 缓存读 --> 磁盘物理读

读取到的数据会按上述顺序往回送。

2、写操作:内存数据直接写入 cache 缓存 (非常快)--> 写入 disk

由上可知,MySQL 之所以读写速度快,cache 在其中起到了关键作用。

①、Cache 缓存特点:

- 速度快

- 掉电数据丢失

- 容量有限

②、保护数据安全 (防止意外掉电的数据丢失) 应对措施:

在存储中,增加 BBU(电池备份单元,就是电池),在掉电后,可以把缓存中的数据写到磁盘中,保证数据不会丢失。

如果没有提供 BBU 或者 BBU 坏了,内存数据就不会写入 cache 缓存中,就会直接写入 disk 中;相较于写入内存,写入磁盘的速度就大打折扣 (万倍之差)。与此同时,因为慢下来的 “写” 占了绝大部分 “读” 的带宽。所以 BBU 问题是读写性能差的一很大的影响因素。

③、cache 缓存容量有限

(4G、8G、16G、32G),系统为了保持 cache 有用,会周期性的将 cache 缓存的数据写入磁盘中,避免 cache 被占满。

二、存储写入速度慢分析

数据库 --> 写入速度慢 --> 系统 hang 住

Q:如何判断写入速度慢?

A:

1、怀疑 BBU 问题

监控 BBU 的 bug,解决:重启 BBU

2、cache 被占满 (类同于 BBU 坏了的情况)

①、海量的写入数据占满 cache 缓存,判断:

shell> iostat -x

mysql> show global status like 'handler_write';

②、cache 写入 disk 的速度慢了 (排水速度远小于注水速度)

硬盘 I/O 异常,负载过高:数据库海量的物理读 (异常 SQL),判断:

mysql> show status like 'Innodb_buffer_pool_reads';

3、存储性能差问题

①、存储设备差,更新设备

②、灾备同步风险,“再好的工程师,敌不过蓝翔的挖掘机、农民工的锄头……”

三、关于 BBU

英文简称:BBU

英文全称:Battery Backup Unit

中文全称:电池备份单元,是电池

1、作用:

在掉电后,把缓存中的数据写到硬盘中,保证数据不会丢失;

是为了意外掉电刷脏数据的一种保护措施;

能够在系统外部供电失效的情况下,提供后备电源支持,以保证存储阵列中业务数据的安全性。

2、许多存储设备都会配备 BBU

BBU 在电源供应出现问题的时候,为 RAID 控制器缓存提供电源。当电源断电时,BBU 电力可以使控制器内缓存中的数据可以保存一定时间(根据 BBU 的型号而决定)。用户只需要在 BBU 电力耗尽 (电池有限) 之前恢复正常供电,缓存中的数据即可被完整的写回 RAID 中, 避免断电导致数据丢失。

和服务器电池有点不一样,服务器中,在配置 RAID 卡的时候可以配一个电池,在系统掉电后,能维持内存中的数据不丢失,但时间有限,大约 12 个小时左右,假如是 12 小时,如果在 12 内没有恢复,内存中的数据就会丢失;

3、超级电容

服务器还有一种保护方式,叫超级电容,也是和 RAID 卡配套的,他能在服务器掉电后把缓存中的数据写入到电容中,而且会***保存,类似写入硬盘,实际上是写入电容,你就理解成写入 U 盘把。他比电池好,即使服务器在 12 个小时后没有恢复电源,也不会造成数据丢失。

责任编辑:武晓燕 来源: ITPUB
相关推荐

2023-05-08 11:57:24

索引数据库IO

2009-12-22 15:38:56

Linux安全性

2010-05-21 18:01:13

2010-05-24 08:54:10

2022-08-28 20:15:47

SD-WAN虚拟化的网络网络

2011-03-08 13:52:25

Proftpd

2010-03-12 11:26:02

ubuntu8.10

2019-11-05 10:12:21

MySQL性能查询

2011-04-02 16:39:53

SQL Server查询

2011-04-02 16:45:58

SQL Server查询优化

2021-12-10 09:30:55

微软Windows 11SSD

2011-09-07 14:55:47

ubuntudns

2015-11-10 10:13:32

Windows 10市场份额盗版

2019-01-30 08:30:53

MySQL性能数据库

2010-06-18 12:37:04

SQL Server查

2010-07-09 09:08:43

2014-01-10 14:08:57

WLAN速度优化

2021-09-10 22:20:51

WiFi网络技术

2010-06-29 10:39:48

SQL Server查
点赞
收藏

51CTO技术栈公众号