您如何优化MySQL数据库进行写操作?
作者:互联网
我在EC2上运行了一个写密集型应用程序.关于如何对其进行优化以能够在MySQL DB上进行数千次并行写入的任何想法?
解决方法:
写扩展是一个难题.也许,写缩放的秘诀在于读缩放.也就是说,缓存尽可能多地读取,以便写入获得所有吞吐量.
话虽如此,您可以做很多事情:
1)从数据模型开始.设计数据模型,以便您永远不会删除或更新表.唯一的操作是插入.仅使用“插入命令”,使用“有效日期”,“有效序列”和“有效状态”即可执行插入,更新和删除操作.此概念称为仅追加模型.结帐RethinkDB ..
2)将“并发插入”标志设置为1.这可以确保在进行读取时,表继续插入.
3)如果尾部只有插入,则可能不需要行级锁.因此,请使用MyISAM(这不会使InnoDB失去任何作用,我将在后面介绍).
4)如果这一切都做不了,请在内存引擎中创建一个副本表.如果您有一个名为MY_DATA的表,请在内存表中创建一个名为MY_DATA_MEM的表.
5)将所有插入重定向到MEM表.创建一个将两个表都合并的视图,并将该视图用作读取源.
6)编写一个守护程序,该守护程序定期将MEM内容移至Main表并从Mem表中删除.将MOVE操作实现为Mem表上的Delete触发器可能是理想的(我希望触发器可以在Memory Engine上使用,但不能完全确定).
7)不要在MEM表上进行任何删除或更新(它们很慢),也要注意表中键的基数(哈希与B树:低卡->哈希,高卡-> B) -树)
8)即使以上所有方法均无效,请抛弃jdbc / odbc.移至InnoDB并使用Handler Socket接口进行直接插入(Google for Yoshinori-San MySQL)
我本人还没有使用过HS,但是基准非常出色. Google Code上甚至还有一个Java HS Project.
希望有帮助.
标签:amazon-ec2,mysql 来源: https://codeday.me/bug/20191105/1996139.html