加快 mysql 插入速度有哪些方式呢

2020-12-19 21:21:59 +08:00
 caiji11
2959 次点击
所在节点    Java
28 条回复
xuanbg
2020-12-19 21:26:40 +08:00
楼主批量插入了解一下
LGA1150
2020-12-19 21:51:00 +08:00
是自增主键吗?
caiji11
2020-12-19 22:06:07 +08:00
@LGA1150 对的 有啥好的想法么
caiji11
2020-12-19 22:08:17 +08:00
@xuanbg 这样 value 后面拼接太多的话 也需要 去设置下 mysql 感觉别人用了工具 可能不知道要设置
clrss
2020-12-19 22:41:10 +08:00
server 端 prepare stmt 用了么
ericbize
2020-12-19 22:52:59 +08:00
lz 是单次插入单条吗?
ZXCDFGTYU
2020-12-19 22:58:17 +08:00
数据如果不重要的话可以把表结构设计为 memory,然后 insert 的时候,可以拼接多个 value,但是不要拼接太多
johnsona
2020-12-19 22:59:59 +08:00
九浅一深
opengps
2020-12-19 23:09:26 +08:00
机械硬盘的话,换成 ssd 硬盘
单条单次写入的话,改为多次批量写入
写入随机时候,保持聚集索引列是递增状态的
wellsc
2020-12-19 23:11:58 +08:00
换 myrocks 引擎,插入贼快,查找就有点捉急
limuyan44
2020-12-19 23:26:18 +08:00
只是生成随机数据还有比存储过程快的吗
caiji11
2020-12-19 23:53:04 +08:00
@clrss 没有 这个对 效率影响很大么 用 jdbc 简单的 insert 不过 刚才试了下批量插入 作用好像不是很明显
wowo243
2020-12-19 23:55:15 +08:00
@caiji11 好像连接的 jdbc url 里要加个配置,批量插曲是比单条快不少的
caiji11
2020-12-19 23:55:43 +08:00
@opengps 嗯嗯 自己可以这么做 我想做成开源的工具
caiji11
2020-12-20 00:04:16 +08:00
@wowo243 rewriteBatchedStatements=true 这个吧 有点作用 快了三秒
caiji11
2020-12-20 00:06:06 +08:00
@wellsc 谢谢啦 知道个新的引擎 不过我想做成开源的工具 想从 sql 入手
caiji11
2020-12-20 00:06:33 +08:00
@ericbize 已经改成了拼接的方式
caiji11
2020-12-20 00:07:25 +08:00
@limuyan44 没懂啥意思 可以再说下么
ericls
2020-12-20 00:11:53 +08:00
去掉 constraint 和 index
foam
2020-12-20 01:00:43 +08:00
@caiji11 他的意思是,你直接在存储过程里写随机值插数据。我没用过,对该方法不表态。

另外,如果用的是 inodb,插入前可以将 innodb_flush_log_at_trx_commit 设置为 0,保证最快插入,处理完再设置回去(默认值是 1)。该参数为 0 时表示每次事务(注意每次插入就是一次事务的提交)写到 buffer 后就返回了,会有个线程异步去刷到日志和落磁盘。而 1 则落到磁盘才返回。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/737113

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX