带有 MySQL 的 AWS EC2 未在可用资源附近的任何地方使用

如何解决带有 MySQL 的 AWS EC2 未在可用资源附近的任何地方使用

我有一个安装了 MySql 8.0.22 的 EC2 (r5.2Xlarge),并且有 2 个架构,每个架构大约 1.3 TB。表包含 3 亿到 20 亿行。对于磁盘,我使用 16,000 IOPS 和 1000 MB/s 的 GP3。所以我认为这很好。 所有表都是 InnoDB。

现在我运行一个查询,我将 830,000,000 行从表 1 复制到表 2,大约需要 5 天才能完成。这简直慢得令人难以置信。

我运行的查询 insert into table2 (id,value_id) 从table1中选择id,value_id;

此查询开始时每秒插入 8000 次,但几分钟后下降到平均 2500 到 3000 次。

我可以在 AWS 性能监控中看到 cpu 大约为 5%,读取 IO 大约为 20,写入大约为 4000。写入性能徘徊在 100mb/s 左右(见下图)。这对我来说是一个迹象,表明我没有最大限度地使用硬件,因为磁盘和 CPU 都没有达到最大容量,人们会假设在上述数据量很大的查询中,磁盘应该以最大速度运行。

有人可以看看下面的摘录,也许会看到一些超出图表的值吗?我花了很长时间在谷歌上搜索,但那里的信息非常矛盾,如果研究没有让我清楚地了解它的作用,我害怕更改设置。

从 innodb 状态中提取

 -----------------
 BACKGROUND THREAD
 -----------------
 srv_master_thread loops: 139616 srv_active,0 srv_shutdown,16834 srv_idle
 srv_master_thread log flush and writes: 0
 ----------
 SEMAPHORES
 ----------
 OS WAIT ARRAY INFO: reservation count 3380537
 OS WAIT ARRAY INFO: signal count 5555711
 RW-shared spins 969285,rounds 1446597,OS waits 477320
 RW-excl spins 1510270,rounds 24745577,OS waits 740601
 RW-sx spins 2014,rounds 59331,OS waits 1966
 Spin rounds per wait: 1.49 RW-shared,16.38 RW-excl,29.46 RW-sx 

--------
 FILE I/O
 --------
 I/O thread 0 state: waiting for completed aio requests (insert buffer thread)
 I/O thread 1 state: waiting for completed aio requests (log thread)
 I/O thread 2 state: waiting for completed aio requests (read thread)
 I/O thread 3 state: waiting for completed aio requests (read thread)
 I/O thread 4 state: waiting for completed aio requests (read thread)
 I/O thread 5 state: waiting for completed aio requests (read thread)
 I/O thread 6 state: complete io for buf page (write thread)
 I/O thread 7 state: complete io for buf page (write thread)
 I/O thread 8 state: complete io for buf page (write thread)
 I/O thread 9 state: complete io for buf page (write thread)
 Pending normal aio reads: [0,0],aio writes: [4,ibuf aio reads:,log i/o's:,sync i/o's:
 Pending flushes (fsync) log: 0; buffer pool: 293064
 12836396 OS file reads,705785528 OS file writes,251455455 OS fsyncs
 1 pending preads,1 pending pwrites
 6085.06 reads/s,16383 avg bytes/read,4331.99 writes/s,1156.48 fsyncs/s
 -------------------------------------
 INSERT BUFFER AND ADAPTIVE HASH INDEX
 -------------------------------------
 Ibuf: size 133,free list len 957047,seg size 957181,145190 merges
 merged operations:
  insert 422868,delete mark 0,delete 0
 discarded operations:
  insert 0,delete 0
 Hash table size 13546877,node heap has 208 buffer(s)
 Hash table size 13546877,node heap has 618 buffer(s)
 Hash table size 13546877,node heap has 1 buffer(s)
 Hash table size 13546877,node heap has 773 buffer(s)
 3259.31 hash searches/s,3153.10 non-hash searches/s
 ---
 LOG
 ---
 Log sequence number          10458893569770
 Log buffer assigned up to    10458893569770
 Log buffer completed up to   10458893569770
 Log written up to            10458893569381
 Log flushed up to            10458893152041
 Added dirty pages up to      10458893569770
 Pages flushed up to          10458813503591
 Last checkpoint at           10458813500688
 34272162 log i/o's done,881.10 log i/o's/second
 ----------------------
 BUFFER POOL AND MEMORY
 ----------------------
 Total large memory allocated 56044290048
 Dictionary memory allocated 891577
 Buffer pool size   3342336
 Free buffers       6583
 Database pages     3316993
 Old database pages 1224525
 Modified db pages  294704
 Pending reads      0
 Pending writes: LRU 0,flush list 28,single page 0
 Pages made young 91169767,not young 2409531454
 0.00 youngs/s,0.01 non-youngs/s
 Pages read 12621539,created 5829939,written 536293398
 0.00 reads/s,0.00 creates/s,0.00 writes/s
 Buffer pool hit rate 987 / 1000,young-making rate 1 / 1000 not 499 / 1000
 Pages read ahead 0.00/s,evicted without access 0.00/s,Random read ahead 0.00/s
 LRU len: 3316993,unzip_LRU len: 0
 I/O sum[1425272]:cur[21320],unzip sum[0]:cur[0]
 ----------------------
 INDIVIDUAL BUFFER POOL INFO
 ----------------------
 ---BUFFER POOL 0
 Buffer pool size   417792
 Free buffers       953
 Database pages     414480
 Old database pages 153021
 Modified db pages  36907
 Pending reads      0
 Pending writes: LRU 0,flush list 6,single page 0
 Pages made young 11324843,not young 305126547
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1576101,created 729712,written 66959369
 0.00 reads/s,0.00 writes/s
 Buffer pool hit rate 988 / 1000,young-making rate 1 / 1000 not 493 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414480,unzip_LRU len: 0
 I/O sum[178159]:cur[2665],unzip sum[0]:cur[0]
 ---BUFFER POOL 1
 Buffer pool size   417792
 Free buffers       946
 Database pages     414488
 Old database pages 153019
 Modified db pages  36836
 Pending reads      0
 Pending writes: LRU 0,flush list 10,single page 0
 Pages made young 11180965,not young 302072441
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1568195,created 728393,written 66790908
 0.00 reads/s,0.00 writes/s
 Buffer pool hit rate 986 / 1000,young-making rate 1 / 1000 not 516 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414488,unzip sum[0]:cur[0]
 ---BUFFER POOL 2
 Buffer pool size   417792
 Free buffers       1017
 Database pages     414457
 Old database pages 152972
 Modified db pages  36608
 Pending reads      0
 Pending writes: LRU 0,single page 0
 Pages made young 11651343,not young 296801601
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1580150,created 729267,written 67338866
 0.00 reads/s,young-making rate 1 / 1000 not 509 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414457,unzip sum[0]:cur[0]
 ---BUFFER POOL 3
 Buffer pool size   417792
 Free buffers       946
 Database pages     414513
 Old database pages 153026
 Modified db pages  37064
 Pending reads      0
 Pending writes: LRU 0,single page 0
 Pages made young 11549266,not young 300684452
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1596663,created 728153,written 67299820
 0.00 reads/s,young-making rate 1 / 1000 not 491 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414513,unzip sum[0]:cur[0]
 ---BUFFER POOL 4
 Buffer pool size   417792
 Free buffers       726
 Database pages     414705
 Old database pages 153101
 Modified db pages  36600
 Pending reads      0
 Pending writes: LRU 0,flush list 0,single page 0
 Pages made young 11279236,not young 300731632
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1569208,created 728718,written 66867473
 0.00 reads/s,young-making rate 1 / 1000 not 515 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414705,unzip sum[0]:cur[0]
 ---BUFFER POOL 5
 Buffer pool size   417792
 Free buffers       603
 Database pages     414855
 Old database pages 153155
 Modified db pages  36645
 Pending reads      0
 Pending writes: LRU 0,single page 0
 Pages made young 11634232,not young 299370124
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1581611,created 728918,written 67297635
 0.00 reads/s,young-making rate 1 / 1000 not 470 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414855,unzip sum[0]:cur[0]
 ---BUFFER POOL 6
 Buffer pool size   417792
 Free buffers       726
 Database pages     414706
 Old database pages 153100
 Modified db pages  37179
 Pending reads      0
 Pending writes: LRU 0,single page 0
 Pages made young 11385018,not young 300961163
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1571483,created 728056,written 67087236
 0.00 reads/s,young-making rate 1 / 1000 not 495 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414706,unzip sum[0]:cur[0]
 ---BUFFER POOL 7
 Buffer pool size   417792
 Free buffers       666
 Database pages     414789
 Old database pages 153131
 Modified db pages  36865
 Pending reads      0
 Pending writes: LRU 0,single page 0
 Pages made young 11164864,not young 303783494
 0.00 youngs/s,0.00 non-youngs/s
 Pages read 1578128,created 728722,written 66652091
 0.00 reads/s,young-making rate 1 / 1000 not 507 / 1000
 Pages read ahead 0.00/s,Random read ahead 0.00/s
 LRU len: 414789,unzip sum[0]:cur[0]
 --------------
 ROW OPERATIONS
 --------------
 0 queries inside InnoDB,0 queries in queue
 0 read views open inside InnoDB
 Process ID=16686,Main thread ID=140092498769664,state=sleeping
 Number of rows inserted 468088646,updated 10678363,deleted 0,read 890691733
 3056.35 inserts/s,127.56 updates/s,0.00 deletes/s,403057.39 reads/s
 Number of system rows inserted 248,updated 420,deleted 707,read 33861
 0.00 inserts/s,0.00 updates/s,0.00 reads/s
 ----------------------------
 END OF INNODB MONITOR OUTPUT
 ============================

write bandwith screenshot

解决方法

您的问题似乎与 Checkpointing Age 相关。当您运行一个巨大的查询时,InnoDB 无法检查写入中继日志的修改,导致 HLL(历史列表长度)无限增加。 随着时间的推移,每次读取都会越来越慢。这是因为 MySQL 需要撤消事务开始后提交的更改,保证读取的数据与事务的开始时间一致。

通过查看 InnoDB 状态报告,您可以看到您当前的列表长度为 80M (Log written up to - Last checkpoint at),相当庞大。

我建议改用批处理方法,分块复制数据,使用索引访问键对批处理进行分区,并避免长时间运行的查询。

永远记住,数据库旨在成为真正高效和可靠的应用程序。这里的效率并不一定意味着将消耗所有可用资源。数据库可持续性能成功的关键是平衡资源使用,在不影响性能的情况下最大化可用性。

参考资料

  1. Percona - InnoDB transaction history often hides dangerous ‘debt’

  2. Percona - InnoDB Flushing in Action for Percona Server for MySQL

  3. Percona - Chasing a Hung MySQL Transaction: InnoDB History Length Strikes Back

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 <select id="xxx"> SELECT di.id, di.name, di.work_type, di.updated... <where> <if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 <property name="dynamic.classpath" value="tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams['font.sans-serif'] = ['SimHei'] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -> systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping("/hires") public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate<String
使用vite构建项目报错 C:\Users\ychen\work>npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-