相关疑难解决方法(0)

MySQL 在磁盘上创建临时表。我该如何阻止?

我们正在运行一个网站(Moodle),用户目前发现它很慢。我想我已经将问题追溯到 MySQL 在磁盘上创建临时表。我created_tmp_disk_tables在 Mysql Workbench 服务器管理中观察了这个变量,这个数字以大约 50 个表/秒的速度增加。经过一天的使用,created_tmp_disk_tables是> 100k。此外,内存似乎没有被释放。使用量不断增加,直到系统变得几乎无法使用,我们必须重新启动 MySQL。我几乎每天都需要重新启动它,从使用大约 30-35% 的可用内存开始,并以 80% 结束一天。

我在数据库中没有 blob,也无法控制查询,因此我无法尝试优化它们。我还使用了Percona 配置向导来生成配置文件,但是 my.ini 也没有解决我的问题。

问题

  1. 我应该更改什么来阻止 MySQL 在磁盘上创建临时表?我需要更改哪些设置?我应该给它扔更多的内存吗?

  2. 如何阻止 MySQL 占用我的内存?

编辑

我启用了slow_queries日志并发现查询SELECT GET_LOCK() 被记录为缓慢。快速搜索显示我在 PHP 配置 ( mysqli.allow_persistent = ON) 中允许持久连接。我关掉了这个。这降低了 MySQL 消耗内存的速度。它仍然在创建临时表。

我还检查了它key_buffer size是否足够大。我看着变量key_writes。这应该为零。如果没有,请增加key_buffer_size.I 有零key_reads和零,key_writes因此我认为key_buffer_size足够大。

我将tmp_table_sizemax-heap-table-size增加到 1024M,因为 created_tmp_disk_tables 的增加可能表明这些表无法放入内存。这并没有解决它。

参考:http : //www.mysqlperformanceblog.com/2007/08/16/how-much-overhead-is-caused-by-on-disk-temporary-tables/

编辑 2

如果您sort_merge_passes …

mysql performance windows database-tuning temporary-tables

32
推荐指数
2
解决办法
9万
查看次数

为什么 MySQL 在磁盘上创建这么多临时表?

任何配置错误是否会导致 mysql..mysql 调谐器显示创建过多的临时表

Current max_heap_table_size = 200 M
Current tmp_table_size = 200 M
Of 17158 temp tables, 30% were created on disk

table_open_cache = 125 tables
table_definition_cache = 256 tables
You have a total of 97 tables
You have 125 open tables.
Current table_cache hit rate is 3%
Run Code Online (Sandbox Code Playgroud)

早期的临时表是“在 23725 个临时表中 38% 是在磁盘上创建的”,但我将 max_heap 和 tmp_table 从 16m 更改为 200m 并降低到 30%。

配置:

engine myisam 
group_concat_max_len = 32768
key_buffer_size = 3.7 GB,
thread_stack = 256k,
table_cache = 125
query_cache_limit = …
Run Code Online (Sandbox Code Playgroud)

mysql innodb myisam memory

15
推荐指数
1
解决办法
3万
查看次数

同时创建多个mysql临时表是不是很糟糕?

我需要进行大量的统计分析才能向用户提供一些数据。目前,我从 mysql 捕获数据并通过PHP数组处理它们。但是,mysql 临时表要好得多(比 PHP 数组效率更高、速度更快;显然是由于它们的机制)。

我的暂定解决方案是在每次请求(即连接)时形成一个临时表来导入和处理数据。但是,我不确定同时创建多个临时表是否有缺点?

这会给mysql服务器带来问题吗?或者我可以在众多同时请求中使用它作为 PHP 数组的替代方案?

mysql memory mysql-5.5 temporary-tables

8
推荐指数
1
解决办法
8981
查看次数