# Memtable 文件数量过多-处理

![center](./student-guide/diagram/place-holder.png)
------------------------------------------------------------
  - 处理建议
    - 磁盘 IO 以及 CPU 能力充足
      - 当 flush 线程忙不过来，导致等待 flush 到磁盘的，memtable 的数量到达 max-write-buffer-number 限定的个数的时，可以调大 max-background-flushes，增加 RocksDB 用于刷写 memtable 的最大后台线程数
    - 磁盘 IO 能力不足
      - 调整 max_write_buffer_number 或 write_buffer_size 参数
        - 这种由于 memtable 太多导致 stall 的情况一般是因为瞬间写入量比较大，memtable flush 到磁盘比较慢导致的。如果磁盘写入速度不能改善，并且只有业务高峰值会出现这种情况，可以通过调大对应 cf 的 max_write_buffer_number 参数来缓解。
        - write_buffer_size 控制一个写内存 memtable 的大小，当这个 memtable 写满之后数据会被固化到磁盘上，这个值越大批量写入的性能越好。max_write_buffer_number 控制写内存 memtable 数目数量。但是这两个值不是越大越好，太大会导致一个 DB 被重新打开时的数据加载时间。
