gpt4 book ai didi

mysql - 最快的 MySQL 性能更新单个索引行中的单个字段

转载 作者:行者123 更新时间:2023-11-30 23:35:29 25 4
gpt4 key购买 nike

我正在尝试从更新索引行并重复替换 varchar 字段中的数据的应用程序中获得最快的性能。此 varchar 字段将在后续更新时使用相同大小的数据进行更新(因此单行永远不会增长)。令我完全困惑的是,我发现性能与字段本身的大小直接相关,并且远不及直接替换文件系统文件中数据的性能。即 1k 字段大小比 50k 字段大小快几个数量级。 (在行大小限制内)如果行存在于数据库中并且大小没有改变,为什么更新会产生如此多的开销?

我正在使用 innodb 并禁用了二进制日志记录。我已经通过使用 sql 生成的字符串排除了通信开销。尝试使用 myisam,它大约快 2-3 倍,但仍然太慢。我知道数据库有开销,但我只是用相同大小的数据替换单个字段中的数据。除了直接替换位之外,数据库在做什么?

粗略的表现#'s81 次更新/秒(60k 字符串)1111 次更新/秒(1k 字符串)

文件系统性能:1428 次更新/秒(60k 字符串)

我正在做的更新是插入...重复键更新。直接更新大约快 50%,但对于它正在做的事情来说仍然慢得离谱。

有高手能指点一下吗?有什么方法可以改善这些数字?

最佳答案

I addressed a question in the DBA StackExchange concerning using CHAR vs VARCHAR .请阅读所有答案,而不仅仅是我的。

还要记住其他事情。 InnoDB features the gen_clust_index, the internal row id clustered index for all InnoDB Tables, one per InnoDB table .如果您更改主键中的任何内容,这将使 gen_clust_index 真正得到重组。

关于mysql - 最快的 MySQL 性能更新单个索引行中的单个字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7797456/

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