问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何优化MySQL insert性能

发布网友 发布时间:2022-04-07 16:56

我来回答

2个回答

热心网友 时间:2022-04-07 18:25

这个问题可深可浅,MySQL的写效率一直被人诟病。
简单的来说你可以用批量插入, insert into table (key1,key2) values(1,2),(1,2).........

当然你可能已经用这种方法了,但结果还是慢,那就先查看你用的是MyISAM还是Innodb。
如果你使用的是innodb,修改innodb缓存innodb_buffer_pool_size一般是你内存的60%, innodb_flush_log_at_trx_commit = 0或2, 提高日志更新效率; innodb_thread_concurrency 根据你CPU的核数来调整。

到最后你可能发现这些东西都不能真正的提高insert的速度,这就是被人诟病的mysql写性能。 你智能用load data infile的方式,这是一种快速的终极方法,但代价是不能保证事物处理的原子性,而且不允许在存储过程中使用。

我以前在这个问题上挣扎了很久,最终的方法是修改业务策略,数据存放尽量精简,减少对Mysql的读写,这才是终极的解决之道。我曾经头痛的难题通过修改业务逻辑把更新速度从47分钟减少到0.02秒,只要结果一样就不用去折腾Mysql了

热心网友 时间:2022-04-07 19:43

对于一些数据量较大的系统,面临的问题除了是查询效率低下,还有一个很重要的问题就是插入时间长。我们就有一个业务系统,每天的数据导入需要4-5个钟。
这种费时的操作其实是很有风险的,假设程序出了问题,想重跑操作那是一件痛苦的事情。因此,提高大数据量系统的MySQL insert效率是很有必要的。
1. 一条SQL语句插入多条数据。
常用的插入语句如:
INSERTINTO`insert_table` (`datetime`, `uid`, `content`, `type`) VALUES('0', 'userid_0', 'content_0', 0);
INSERTINTO`insert_table` (`datetime`, `uid`, `content`, `type`) VALUES('1', 'userid_1', 'content_1', 1);
修改成:
INSERTINTO`insert_table` (`datetime`, `uid`, `content`, `type`) VALUES('0', 'userid_0', 'content_0', 0), ('1', 'userid_1', 'content_1', 1);

修改后的插入操作能够提高程序的插入效率。这里第二种SQL执行效率高的主要原因有两个,一是减少SQL语句解析的操作, 只需要解析一次就能进行数据的插入操作,二是SQL语句较短,可以减少网络传输的IO。
2. 在事务中进行插入处理。把插入修改成:
START TRANSACTION;
INSERTINTO`insert_table` (`datetime`, `uid`, `content`, `type`) VALUES('0', 'userid_0', 'content_0', 0);
INSERTINTO`insert_table` (`datetime`, `uid`, `content`, `type`) VALUES('1', 'userid_1', 'content_1', 1);
...
COMMIT;

使用事务可以提高数据的插入效率,这是因为进行一个INSERT操作时,MySQL内部会建立一个事务,在事务内进行真正插入处理。通过使用事务可以减少创建事务的消耗,所有插入都在执行后才进行提交操作。
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
单位高温防护欠缺致员工中暑如何对待 狗狗为什么爱看视频 360浏览器怎么设置倍速播放 ...先讲女主的灵魂飘荡了一段时间,然后重生,请问是那本? 拯救者散热器怎么开 电脑如何一键还原系统电脑一键还原怎么操作 神舟笔记本电脑怎么重新设置神舟战神bios恢复出厂设置 神舟电脑恢复出厂设置神舟战神怎么恢复原厂系统 水泥楼梯如何铺木楼梯 家里面楼梯是水泥的不想铺地毯或者地砖还能铺什么 广州市哪些地方有奥特曼卡扭蛋机? 新能源补贴2021最新政策 数据归档被删后 如何恢复这些数据? lg r卡与bc r卡哪种卡牌更稀有 奥特曼卡片几元包含有bc r 现在买新能源汽车,国家有补贴政策吗? 美丽乡村过大年的微信摇一摇谁中过奖?我严重怀疑这是诈骗啊! 有哪些低成本的宣传方式? 北京每年自考的考试的时间是4月10月最后两周的周末 【自考】我今年四月份考完最后两科,什么时候可以取得本科毕业证 2012年英语本科自考 英美文学科目 难道只有4月考???!!! 我2018年4月份考的科目一,驾校有效期3年是到2020年4月 还是2021年4月份呢? 苏州自考会计4月份考哪些科目 自考汉语言专科2016年4月份考哪哪些科目 双鱼座的女生属什么多少岁 山东自考旅游管理专业独立本科的考试科目中,哪些是10月份考哪些是4月份考? 双鱼座的2010年是几岁 自考小学教育专科,请问一下4月份考那些科目,10月份考那些科目? 双鱼座今年多少岁 自考本科4月考完最后一门,5月底能毕业吗 电脑一打开就出现请输入你的登录信息然后再试一次点了确定为什么一直进不去? AppleID注册时说“您没有完整填写表格请输入您的出生年份”,可是没有 请输入您的CDKEY什么意思? 登陆QQ时出现一个蓝色字框,上面写的:“请输入您的本地密码” 请输入您的邮储个人网上银行注册证件号码或登录昵称是什么意思 打电话响铃后让请输入您的远程登录号码是什么意思 英语翻译:请输入您的提问 咸肉炖方笋干怎么做好吃,咸肉炖方笋干的家常做法 笋干咸肉蛋卷腊肠蒸菜拼盘怎么做 做视频是怎么赚钱的 做视频网站的公司怎么赚钱 做视频是如何赚钱的? 要写一个关于商场不允许用煤气的通知,先接到消防部门通知的,急。 农贸市场禁止使用液化气规定 自家的wifi密码忘记了怎么找回? 消防法哪条规定不可以在夜市使用煤气罐? 苏州有禁止家庭使用煤气罐的明文规定吗? 国家对煤气罐使用规定 通道放煤气罐,物业怎么出整改通知? 国家有没有明文禁止使用煤气罐