【问题标题】:Thread Pool in MariaDB vs Innodb thread and pool settingsMariaDB 中的线程池与 Innodb 线程和池设置
【发布时间】:2023-03-28 07:52:01
【问题描述】:
在我开始在 MariaDB 中使用线程池之前,my.cnf 文件具有以下设置以保持 SQL 服务器稳定。
innodb_additional_mem_pool_size
innodb_buffer_pool_size
innodb_commit_concurrency
innodb_write_io_threads
innodb_read_io_threads
innodb_thread_concurrency
innodb_sort_buffer_size
在得知 MariaDB 免费支持线程池功能后,我添加了
thread_handling=线程池
在 my.cnf 中,我重新启动了 SQL 服务器,一切看起来都很酷,现在我想知道
- 上面的 Innodb 设置还算吗?
- MariaDB 中的线程池是否管理线程数、内存分配、并发等?
- 最后,在开始使用 MariaDB 中的线程池后,我应该保留这些 innodb 设置还是应该删除它们?
谢谢
【问题讨论】:
标签:
multithreading
concurrency
innodb
mariadb
pool
【解决方案1】:
- 上面的 Innodb 设置还算吗?
是的,它们仍然很重要。线程池不知道 innodb 的细节。它甚至不知道您是在 Innodb 表上运行“SELECT 1”还是 DML 语句。一切都是不透明的查询。 Threadpool 知道线程是在运行还是在等待,并尝试以 CPU 数量(或者,如果您在 Unix 上,则为 thread-pool-size)保持正在运行的线程数。 不计入线程池的唯一设置是 thread-cache-size
- MariaDB 中的线程池是否管理线程数、内存分配、并发等?
线程数,并发。不是内存分配。
- 最后,在开始使用 MariaDB 中的线程池后,我应该继续保留这些 innodb 设置还是应该删除它们?
不要全部删除。线程池不管理缓冲区大小,因此保留这些非常重要。但是,您可以尝试是否保留或删除 innodb-thread-concurrency, 和 innodb-commit-concurrency,因为它们可能会被线程池淘汰(它们仍然可以在繁重的写入工作量)
【解决方案2】:
设置...
- innodb_additional_mem_pool_size -- 在 MySQL 中已弃用并在 5.7 中删除; MariaDB 中可能仍在使用;不是很重要的设置。
- innodb_buffer_pool_size -- 绝对。这仍然是最重要的设置;留着!
- 剩下的——保留。