gpt4 book ai didi

mysql - 降低 MySQL 中的持久性以提高性能

转载 作者:可可西里 更新时间:2023-11-01 07:06:44 25 4
gpt4 key购买 nike

我的站点偶尔会出现相当可预测的流量突发,使吞吐量比正常情况增加 100 倍。例如,我们将在电视节目中亮相,我预计在节目结束后的一个小时内,我将获得比平时多 100 倍的流量。

我的理解是 MySQL (InnoDB) 通常将我的数据保存在一堆不同的地方:

  • RAM 缓冲区
  • 提交日志
  • 二进制日志
  • 实际表格
  • 我的 DB slave 上的所有上述位置

考虑到我在 EC2 节点上并且大部分内容都通过同一网络管道(文件系统是网络连接的),这太“耐用”了。另外,驱动器速度很慢。数据的值(value)不高,我宁愿冒几分钟数据丢失的小概率,也不愿在人群到达时出现中断的高概率。

在这些流量激增期间,如果我负担得起,我愿意做所有这些 I/O。我想尽可能多地保留在 RAM 中(与一个小时内接触的数据大小相比,我有相当多的 RAM)。如果缓冲区变得稀缺,或者 I/O channel 没有过载,那么当然,我希望将内容发送到提交日志或二进制日志以发送到从属设备。如果且仅当 I/O channel 没有过载时,我想写回实际的表。

换句话说,我希望 MySQL/InnoDB 使用“回写”缓存算法而不是“直写”缓存算法。我可以说服它这样做吗?

如果这不可能,我对一般的 MySQL 写入性能优化技巧感兴趣。大多数文档都是关于优化读取性能的,但是当我有一大群用户时,我要为他们所有人创建帐户,所以这是一个写入繁重的工作量。

最佳答案

如果您可以承受一些额外的风险,这两项更改将大大提高您的写入性能。

设置innodb_flush_log_at_trx_commit=0
设置sync_binlog=0

此外,您的缓冲池大小应约为服务器内存的 70-80%。增加日志文件大小和日志缓冲区大小也会在一定程度上有所帮助。

关于mysql - 降低 MySQL 中的持久性以提高性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3002985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com