首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Threads_cached 0而thread_cache_size >0

Threads_cached 0而thread_cache_size >0
EN

Database Administration用户
提问于 2014-09-25 09:22:10
回答 1查看 1.6K关注 0票数 2

我试图对一些MySQL (在我的例子中是- MariaDB)性能有一点了解。

我发现了一点--“线程缓存”。

所以-我决定:

代码语言:javascript
复制
thread_cache_size = 4

my.cnf中重新启动服务器。

在现状中,我看到:

代码语言:javascript
复制
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

代码语言:javascript
复制
$ 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个线程才能在以后使用它,但是:

代码语言:javascript
复制
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。

EN

回答 1

Database Administration用户

回答已采纳

发布于 2014-09-25 14:05:21

当客户端断开连接时,如果缓存中的线程少于thread_cache_size线程,则将客户机的线程放在缓存中。

在你的例子中,它会写成

当客户端断开连接时,如果缓存中的线程少于4个,客户机的线程就会被放入缓存中。

另外,请注意MySQL文档中的以下内容

通常,如果您有一个好的线程实现,这不会提供显著的性能改进。但是,如果服务器每秒看到数百个连接,通常应该将thread_cache_size设置得足够高,以便大多数新连接使用缓存的线程。

鉴于这一说法,4似乎太低了。您应该将其设置得更高,或者根本不设置它(让MariaDB为您设置它)。

票数 1
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/77602

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档