`
hejiajunsh
  • 浏览: 409951 次
  • 性别: Icon_minigender_1
  • 来自: 天津
社区版块
存档分类
最新评论

运行时参数tmp_table_size和max_heap_table_size

阅读更多

 

可用到的语句:

SET GLOBAL max_heap_table_size=522715200;512M

SHOW status like 'created%';

SHOW variables LIKE '%table_size';

 

以下内容整理自mysql手册(tmp_table_size/max_heap_table_size): 

tmp_table_size

Command-Line Format --tmp_table_size=#
Option-File Format tmp_table_size
System Variable Name tmp_table_size
Variable Scope Global, Session
Dynamic Variable Yes
  Permitted Values
Type numeric
Default system dependent
Range 1024 .. 4294967295

The maximum size of internal in-memory temporary tables. (The actual limit is determined as the minimum oftmp_table_size and max_heap_table_size.) If an in-memory temporary table exceeds the limit, MySQL automatically converts it to an on-disk MyISAM table. Increase the value of tmp_table_size (andmax_heap_table_size if necessary) if you do many advanced GROUP BY queries and you have lots of memory. This variable does not apply to user-created MEMORY tables.

You can compare the number of internal on-disk temporary tables created to the total number of internal temporary tables created by comparing the values of the Created_tmp_disk_tables and Created_tmp_tablesvariables.

 

 

 max_heap_table_size

Command-Line Format --max_heap_table_size=#
Option-File Format max_heap_table_size
System Variable Name max_heap_table_size
Variable Scope Global, Session
Dynamic Variable Yes
  Permitted Values
Platform Bit Size 32
Type numeric
Default 16777216
Range 16384 .. 4294967295
  Permitted Values
Platform Bit Size 64
Type numeric
Default 16777216
Range 16384 .. 1844674407370954752

This variable sets the maximum size to which user-created MEMORY tables are permitted to grow. The value of the variable is used to calculate MEMORY table MAX_ROWS values. Setting this variable has no effect on any existingMEMORY table, unless the table is re-created with a statement such as CREATE TABLE or altered with ALTER TABLEor TRUNCATE TABLE. A server restart also sets the maximum size of existing MEMORY tables to the globalmax_heap_table_size value.

This variable is also used in conjunction with tmp_table_size to limit the size of internal in-memory tables. SeeSection 8.8.5, “How MySQL Uses Internal Temporary Tables”.

 

 

8.8.5. How MySQL Uses Internal Temporary Tables

In some cases, the server creates internal temporary tables while processing queries. Such a table can be held in memory and processed by the MEMORY storage engine, or stored on disk and processed by the MyISAM storage engine. The server may create a temporary table initially as an in-memory table, then convert it to an on-disk table if it becomes too large. Users have no direct control over when the server creates an internal temporary table or which storage engine the server uses to manage it.

Temporary tables can be created under conditions such as these:

  • If there is an ORDER BY clause and a different GROUP BY clause, or if the ORDER BY or GROUP BY contains columns from tables other than the first table in the join queue, a temporary table is created.

  • DISTINCT combined with ORDER BY may require a temporary table.

  • If you use the SQL_SMALL_RESULT option, MySQL uses an in-memory temporary table, unless the query also contains elements (described later) that require on-disk storage.

To determine whether a query requires a temporary table, use EXPLAIN and check the Extra column to see whether it says Using temporary. See Section 8.2.1, “Optimizing Queries with EXPLAIN.

Some conditions prevent the use of an in-memory temporary table, in which case the server uses an on-disk table instead:

  • Presence of a BLOB or TEXT column in the table

  • Presence of any string column in a GROUP BY or DISTINCT clause larger than 512 bytes

  • Presence of any string column with a maximum length larger than 512 (bytes for binary strings, characters for nonbinary strings) in the SELECT list, if UNION or UNION ALL is used

The SHOW COLUMNS and The DESCRIBE statements use BLOB as the type for some columns, thus the temporary table used for the results is an on-disk table.

If an internal temporary table is created initially as an in-memory table but becomes too large, MySQL automatically converts it to an on-disk table. The maximum size for in-memory temporary tables is the minimum of the tmp_table_size and max_heap_table_size values. This differs from MEMORY tables explicitly created withCREATE TABLE: For such tables, the max_heap_table_size system variable determines how large the table is permitted to grow and there is no conversion to on-disk format.

When the server creates an internal temporary table (either in memory or on disk), it increments theCreated_tmp_tables status variable. If the server creates the table on disk (either initially or by converting an in-memory table) it increments the Created_tmp_disk_tables status variable.

 

 

 

分享到:
评论

相关推荐

    mysql tmp_table_size和max_heap_table_size大小配置

    总结来说,`tmp_table_size` 和 `max_heap_table_size` 是MySQL数据库中关键的优化参数,它们影响到内存临时表的使用,进而影响查询效率。正确设置这两个参数,结合对查询语句的优化,可以显著提升数据库系统的整体...

    mysql tmp_table_size优化之设置多大合适

    此外,还有一个与`tmp_table_size`相关的参数`max_heap_table_size`,当内存临时表大小超过`max_heap_table_size`时,数据将溢出到磁盘。因此,`max_heap_table_size`应至少等于`tmp_table_size`,以避免不必要的...

    MySQL临时表空间优化:提升数据库性能的关键

    通过设置 `tmp_table_size` 和 `max_heap_table_size` 来调整内存临时表的大小: ```sql SET GLOBAL tmp_table_size = 512M; SET GLOBAL max_heap_table_size = 512M; ``` 3. **配置 InnoDB 临时表空间** ...

    MySQL8.0优化Hint-在SQL中修改会话变量.pdf

    * max_heap_table_size * max_join_size * max_length_for_sort_data * max_points_in_geometry * max_seeks_for_key * max_sort_length * optimizer_prune_level * optimizer_search_depth * optimizer_switch * ...

    MySQL性能分析之临时表

    它会检查`max_heap_table_size`、`tmp_table_size`等参数,并提供优化建议。 3. **日志文件**:MySQL的日志文件也可以用来监控临时表的活动。通过分析日志文件,可以发现可能导致性能问题的模式。 #### 五、案例...

    mysql中的内存使用.pdf

    如果max_heap_table_size参数设置的值小于tmp_table_size,则会使用max_heap_table_size作为内存临时表的最大大小。 接着是全局共享内存,这是MySQL实例中的所有线程共享的内存区域。全局共享内存主要用于缓存表的...

    mysql_配置详细说明.docx

    15. **tmp_table_size**和**max_heap_table_size**:这两个参数决定了内存中临时表的最大大小,对处理大型数据集时的性能有直接影响。 16. **thread_cache_size**:缓存线程的数量,减少创建新线程的开销。 17. **...

    Mysql参数优化

    4. **tmp_table_size** 和 **max_heap_table_size**:这两个参数分别控制了内存临时表的大小限制。当查询过程中需要创建临时表时,如果数据量超过指定大小,则会转为磁盘临时表,这会显著降低性能。因此,根据实际...

    MySQL服务器优化细解

    如果大部分临时表被写入磁盘,这可能是内存不足或者查询设计不当的标志,应考虑增大`tmp_table_size`和`max_heap_table_size`,或者优化导致大量磁盘临时表的查询。 除此之外,还有其他优化点,例如InnoDB的缓冲池...

    1.影响MySQL性能的配置参数1

    5. `tmp_table_size` 和 `max_heap_table_size`: 这两个参数控制内存中临时表的大小。当查询结果无法在内存中完全存储时,MySQL会将数据写入磁盘,这会导致性能显著下降。根据系统内存和查询需求进行调整。 6. `...

    MySQL内存表的特性与使用介绍

    内存表,就是放在内存中的表,所使用内存的大小可通过My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,内存表与临时表并不相同,临时表也是存放在内存中,临时表最大所需内存需要通过tmp_table_...

    mysql_best_configuration-master--姜承尧配置5.6-5.7

    5. **tmp_table_size**和**max_heap_table_size**:这两个参数控制内存中临时表的大小。如果处理大量临时表或大联接操作,应适当增加这些值,但要确保不超过系统内存。 6. **innodb_flush_log_at_trx_commit**:...

    本次使用的mysql配置文件

    6. **优化选项**:如`query_cache_size`控制查询缓存的大小,`join_buffer_size`影响JOIN操作的性能,`tmp_table_size`和`max_heap_table_size`限制内存中临时表的大小。 7. **复制配置**:在主从复制的环境中,`...

    MySQL的内存表的基础学习教程

    内存表,就是放在内存中的表,所使用内存的大小可通过My.cnf中的max_heap_table_size指定,如max_heap_table_size=1024M,内存表与临时表并不相同,临时表也是存放在内存中,临时表最大所需内存需要通过tmp_table_...

    mysql-linux版详细安装教程

    max_heap_table_size = 512M skip-log-bin lower_case_table_names=1 tmpdir=/data/tmp foreign_key_checks=0 max_allowed_packet = 1073741824 ``` 启动 MySQL 1. 开机自启:cd /data/mysql/support-files/,sudo ...

    关于MySQL性能调优你必须了解的15个重要变量(小结)

    14. **tmp_table_size** 和 **max_heap_table_size**: 内存中临时表的最大大小,设置过大可能导致内存溢出,设置过小可能导致频繁磁盘临时表的创建。 15. **innodb_adaptive_hash_index**: 自适应哈希索引有助于...

    Linux服务器下常用应用环境安装,nginxtomcatmysqlantjdk配置归类.pdf

    #如果你做很多高级GROUP BY 查询,增加tmp_table_size 和 max_heap_table_size 值 tmp_table_size = 256M max_heap_table_size = 512M #重点优化参数,在数据库写入量或是更新量也比较大的系统,该参数不适合分配过...

    linux 高负载下mysql数据库优化

    - 使用内存优化的系统变量,如`tmp_table_size`和`max_heap_table_size`,减少临时表在磁盘上的使用。 - 定期优化表,重建索引以消除碎片。 - 监控并调整服务器级别的资源限制,如打开文件的限制(`open_files_limit`...

Global site tag (gtag.js) - Google Analytics