首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将mysqld写入磁盘的字节数最小化?

如何将mysqld写入磁盘的字节数最小化?
EN

Stack Overflow用户
提问于 2013-12-28 18:46:12
回答 1查看 2.2K关注 0票数 4

我使用raspberry pi (raspbian system)上的mysql服务器来存储传感器读数。每分钟一条长度为20字节的记录插入到mysql表中。

但是iotop命令显示mysqld进程每分钟写200 K。为了延长sd卡的耐久性,我想尽量减少写入sd卡的数据装载(我已经应用了防止sd卡损坏的修复程序,比如日志和其他黑客的tmpfs )。

当只向表插入20B数据时,mysqld为什么要写入200 K字节?在上面的场景中,是否有减少写入的方法,调优mysql服务器?

有趣的是vmstat命令没有在"io/bo“列中显示那么多写入磁盘的数据。

我使用mysql服务器5.5.33-0+winezy1和innoDB表。

更新:

Bill在下面的详细回答让我意识到,使用mysql服务器对于简单的传感器日志记录来说是一种过度使用。最后我迁移到了sqlite。对于相同的表结构,sqlite每次事务写入的字节是mysql的6倍(约30 sd ),这对RPi sd卡来说更好。我仍然在进行优化,因为正如我前面所说,我只编写了每个事务的实际数据20b。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-28 19:22:18

InnoDB将记录写入事务日志(ib_logfile*),该日志对齐为512个字节.它还将信息写入第一个日志的标题。这是不可配置的,但是可以通过将提交变量更改为0来减少写入频率。

然后修改后的页面以16 on页的形式写入磁盘,而不管您是否只在该页上写入了一个20字节的行。在MySQL 5.6中,可以使用大小变量将页面大小缩小到4KB。

在写入表空间中的相应位置之前,还会将页写入双写缓冲区。可以使用双写变量禁用双写缓冲区。

页面也可以写入回滚段。这是不可配置的。

还有二进制日志。具体而言,这与InnoDB无关,它用于任何存储引擎。如果您使用的是Raspberry Pi,那么我假设您不需要二进制日志。您可以使用箱子变量禁用二进制日志(只是不要设置此变量,默认条件是禁用该变量)。

还可以禁用常规查询日志和慢速查询日志。

还有一个错误日志,但您不能禁用它。

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

https://stackoverflow.com/questions/20818074

复制
相关文章

相似问题

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