首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql插入过慢和过高的io/cpu使用率。

mysql插入过慢和过高的io/cpu使用率。
EN

Stack Overflow用户
提问于 2022-04-24 01:16:45
回答 1查看 127关注 0票数 -1

表行约为1亿,有时io bps约为150 IOPS,约为4k。

  1. os版本: CentOS Linux 7
  2. MySQL版本: docker :5.6

代码语言:javascript
复制
server_id=3310
skip-host-cache
skip-name-resolve
max_allowed_packet=20G
innodb_log_file_size=1G
init-connect='SET NAMES utf8mb4'
character-set-server = utf8mb4
collation-server = utf8mb4_general_ci
innodb_flush_log_at_trx_commit=0
innodb_buffer_pool_size=5120M
expire-logs-days=7
log_bin=webser
binlog_format=ROW
back_log=1024
slow_query_log
slow_query_log_file=slow-log
tmpdir=/var/log/mysql
sync_binlog=1000

  1. 创建表语句

代码语言:javascript
复制
CREATE TABLE `device_record` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `os` tinyint(9) DEFAULT NULL,
  `uid` int(11) DEFAULT '0',
  `idfa` varchar(50) DEFAULT NULL,
  `adv` varchar(8) DEFAULT NULL,
  `oaid` varchar(100) DEFAULT NULL,
  `appId` tinyint(4) DEFAULT NULL,
  `agent` varchar(100) DEFAULT NULL,
  `channel` varchar(20) DEFAULT NULL,
  `callback` varchar(1500) DEFAULT NULL,
  `activeAt` datetime DEFAULT NULL,
  `chargeId` int(11) DEFAULT '0',
  `createAt` datetime DEFAULT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `idfa_record_index_oaid` (`oaid`),
  UNIQUE KEY `index_record_index_agent` (`agent`) USING BTREE,
  UNIQUE KEY `idfa_record_index_idfa_appId` (`idfa`) USING BTREE,
  KEY `index_record_index_uid` (`uid`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=1160240883 DEFAULT CHARSET=utf8mb4

  1. 插入语句

代码语言:javascript
复制
@Insert(
      "insert into idfa_record (os,idfa,oaid,appId,agent,channel,callback,adv,createAt) "
          + "values(#{os},#{idfa},#{oaid},#{appId},#{agent},#{channel},#{callback},#{adv},now()) on duplicate key "
          + "update createAt=if(uid<=0,now(),createAt),activeAt=if(uid<=0 and channel != #{channel},null,activeAt),channel=if(uid<=0,#{channel},channel),"
          + "adv=if(uid<=0,#{adv},adv),callback=if(uid<=0,#{callback},callback),appId=if(uid<=0,#{appId},appId)")
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-04-24 18:26:37

一亿行,但auto_increment已经有1160米了?这是很有可能的但是..。

最重要的是,该表超过了溢出INT SIGNED.

  • Are的一半,您执行的插入“刻录”is?

  • 是否存在4个唯一的键会导致跳过许多行?

这似乎太过分了:max_allowed_packet=20G

available?

  • Does交换发生了多少内存?

每秒插入多少行?什么是"bps"?(我在思考为什么会有4K的写作。我希望每插入一个唯一的键大约有2个IOPS,但是除非你有大约500个插入/秒,否则这个键加起来不会达到4K。

这些插入件是否来自不同的客户?(这会导致“燃烧”ids、懒散等)

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71984781

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档