我试图对一些MySQL (在我的例子中是- MariaDB)性能有一点了解。
我发现了一点--“线程缓存”。
所以-我决定:
thread_cache_size = 4在my.cnf中重新启动服务器。
在现状中,我看到:
MariaDB [mysql]> show status where variable_name like 'Threads%';
+-------------------+-------+
| Variable_name | Value |
+-------------------+-------+
| Threads_cached | 0 |
| Threads_connected | 2 |
| Threads_created | 23 |
| Threads_running | 1 |
+-------------------+-------+
4 rows in set (0.00 sec)接下来-我运行mysqlslap:
$ mysqlslap -v -u user -p --auto-generate-sql --concurrency=10 --number-of-queries=100
...
Number of clients running queries: 10
Average number of queries per client: 10因此,如果我更正了uder站立,在客户端断开连接后-服务器必须在缓存中保存4个线程才能在以后使用它,但是:
MariaDB [mysql]> show status where variable_name='Threads_cached';
+----------------+-------+
| Variable_name | Value |
+----------------+-------+
| Threads_cached | 0 |
+----------------+-------+
1 row in set (0.00 sec)Threads_cached仍然有0。
发布于 2014-09-25 14:05:21
当客户端断开连接时,如果缓存中的线程少于thread_cache_size线程,则将客户机的线程放在缓存中。
在你的例子中,它会写成
当客户端断开连接时,如果缓存中的线程少于4个,客户机的线程就会被放入缓存中。
另外,请注意MySQL文档中的以下内容
通常,如果您有一个好的线程实现,这不会提供显著的性能改进。但是,如果服务器每秒看到数百个连接,通常应该将thread_cache_size设置得足够高,以便大多数新连接使用缓存的线程。
鉴于这一说法,4似乎太低了。您应该将其设置得更高,或者根本不设置它(让MariaDB为您设置它)。
https://dba.stackexchange.com/questions/77602
复制相似问题