Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

请问一下WAL文件和write-buffer-size参数关系 #980

Closed
AVOlili opened this issue Nov 6, 2020 · 6 comments
Closed

请问一下WAL文件和write-buffer-size参数关系 #980

AVOlili opened this issue Nov 6, 2020 · 6 comments

Comments

@AVOlili
Copy link

AVOlili commented Nov 6, 2020

write-buffer-size设置为256M时,WAL文件大小会快速涨到280M左右;write-buffer-size设置为64M时,wal文件只会涨到70几M。但是我的理解应该是wal size > db-write-buffer-size而不应该是write-buffer-size相关,能方便解答下吗?
图片
图片
下面这个是参考网上得到的部分rocksdb信息
图片

@LIBA-S
Copy link
Contributor

LIBA-S commented Nov 9, 2020

WAL文件本质是redo log的,一旦相关的内存信息(write buffer内容)持久化到磁盘(sst文件),那这部分log就可以安全删除了。所以和cf的write buffer size相关。

@AVOlili
Copy link
Author

AVOlili commented Nov 10, 2020

有关系,但是想知道是什么关系,我记得刘振说过每个slot 5种数据结构会使用10个memtable(rocksdb中一个列簇使用一个。set hash list 使用2个列簇。zset使用3个)。那么每种数据结构的总的memtable大小应该不一样呀,但是结果是每种数据结构的WAL都差不多大

@LIBA-S
Copy link
Contributor

LIBA-S commented Nov 10, 2020

不严格的来讲,可以粗略认为db_write_buffer_size是WAL的上限,write_buffer_size为下限(在未手动设置max_wal_size和flush cf的前提下)。大多数情况下,每个cf的数据量和负载是不一样的,所以同时写满的概率极低。拿咱们的list来说,一个为meta cf,一个为data cf,显然data cf的数据量和负载更大,更容易写满(触发flush,切换WAL)。

@AVOlili
Copy link
Author

AVOlili commented Nov 10, 2020

不严格的来讲,可以粗略认为db_write_buffer_size是WAL的上限,write_buffet_size为下限(在未手动设置max_wal_size和flush cf的前提下)。大多数情况下,每个cf的数据量和负载是不一样的,所以同时写满的概率极低。拿咱们的list来说,一个为meta cf,一个为data cf,显然data cf的数据量和负载更大,更容易写满(触发flush,切换WAL)。

好的,谢谢

@mzygQAQ
Copy link

mzygQAQ commented Nov 25, 2021

不严格的来讲,可以粗略认为db_write_buffer_size是WAL的上限,write_buffer_size为下限(在未手动设置max_wal_size和flush cf的前提下)。大多数情况下,每个cf的数据量和负载是不一样的,所以同时写满的概率极低。拿咱们的list来说,一个为meta cf,一个为data cf,显然data cf的数据量和负载更大,更容易写满(触发flush,切换WAL)。

您好 想咨询下 我看rocksdb每个cf是有独立的memtable, 但是多个cf共用wal 还是以lists为例,dataCF和metaCF 共用wal, 这种情况下 dataCF应该很容易触发memtable-flush的 但是metaCF却不一定, 这会不会因为MetaCF改动小很久才flush 导致wal迟迟无法删除。 我理解是必须dataCF的memtable和metaCF的memtable都flush了 相关的wal才能被删除的

@yapple
Copy link

yapple commented Nov 25, 2021 via email

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants