| 
                         Thread_stack:每个连接线程被创建时,MySQL给它分配的内存大小。当MySQL创建一个新的连接线程时,需要给它分配一定大小的内存堆栈空间,以便存放客户端的请求的Query及自身的各种状态和处理信息。 
- mysql> show status like '%threads%'; 
 - +-------------------------+---------+ 
 - | Variable_name           | Value   | 
 - +-------------------------+---------+ 
 - | Delayed_insert_threads  | 0       | 
 - | Slow_launch_threads     | 0       | 
 - | Threadpool_idle_threads | 0       | 
 - | Threadpool_threads      | 0       | 
 - | Threads_cached          | 0       | 
 - | Threads_connected       | 1       | 
 - | Threads_created         | 9649301 | 
 - | Threads_running         | 1       | 
 - +-------------------------+---------+ 
 - 8 rows in set (0.00 sec) 
 -  
 - mysql> show status like 'connections'; 
 - +---------------+---------+ 
 - | Variable_name | Value   | 
 - +---------------+---------+ 
 - | Connections   | 9649311 | 
 - +---------------+---------+ 
 - 1 row in set (0.00 sec) 
 
  
如上:系统启动到现在共接受到客户端的连接9649311次,共创建了9649301个连接线程,当前有1个连接线程处于和客户端连接的状态。而在Thread Cache池中共缓存了0个连接线程(Threads_cached)。 
Thread Cache 命中率: 
- Thread_Cache_Hit = (Connections - Threads_created) / Connections * 100%;  
 
  
一般在系统稳定运行一段时间后,Thread Cache命中率应该保持在90%左右才算正常。 
内存临时表
tmp_table_size 控制内存临时表的最大值,超过限值后就往硬盘写,写的位置由变量 tmpdir 决定 
max_heap_table_size 用户可以创建的内存表(memory table)的大小.这个值用来计算内存表的最大行数值。 
Order By 或者Group By操作多的话,加大这两个值,,默认16M 
- mysql> show status like 'Created_tmp_%'; 
 - +-------------------------+-------+ 
 - | Variable_name           | Value | 
 - +-------------------------+-------+ 
 - | Created_tmp_disk_tables | 0     | 
 - | Created_tmp_files       | 626   | 
 - | Created_tmp_tables      | 3     | 
 - +-------------------------+-------+ 
 - 3 rows in set (0.00 sec) 
 
  
    - 如上图,写入硬盘的为0,3次中间表,说明我们的默认值足够用了
 
 
mariadb 推荐配置
    - 注意这里只推荐innodb引擎
 
    - 内存配置只关注有注释的行
 
 
- [mysqld] 
 - datadir=/var/lib/mysql 
 - socket=/var/lib/mysql/mysql.sock 
 - default-storage-engine=INNODB 
 -  
 - character-set-server=utf8 
 - collation-server=utf8_general_ci 
 -  
 - user=mysql 
 - symbolic-links=0 
 -  
 - # global settings 
 - table_cache=65535 
 - table_definition_cache=65535 
 -  
 - max_allowed_packet=4M 
 - net_buffer_length=1M 
 - bulk_insert_buffer_size=16M 
 -  
 - query_cache_type=0              #是否使用查询缓冲,0关闭 
 - query_cache_size=0              #0关闭,因为改表操作多,命中低,开启消耗cpu 
 -  
 - # shared 
 - key_buffer_size=8M              #保持8M MyISAM索引用 
 - innodb_buffer_pool_size=4G              #DB专用mem*50%,非DB专用mem*15%到25% 
 - myisam_sort_buffer_size=32M 
 - max_heap_table_size=16M             #最大中间表大小 
 - tmp_table_size=16M              #中间表大小 
 -  
 - # per-thread 
 - sort_buffer_size=256K               #加速排序缓存大小 
 - read_buffer_size=128k               #为需要全表扫描的MYISAM数据表线程指定缓存 
 - read_rnd_buffer_size=4M             #已排序的表读取时缓存,如果比较大内存就到6M 
 - join_buffer_size=1M             #join语句多时加大,1-2M 
 - thread_stack=256k               #线程空间,256K or 512K 
 - binlog_cache_size=64K               #大事务binlog 
 -  
 -  
 - # big-tables 
 - innodb_file_per_table = 1 
 - skip-external-locking 
 - max_connections=2048                #最大连接数 
 - skip-name-resolve 
 -  
 - # slow_query_log 
 - slow_query_log_file = /var/log/mysql-slow.log 
 - long_query_time = 30 
 - group_concat_max_len=65536 
 -  
 - # according to tuning-primer.sh 
 - thread_cache_size = 8 
 - thread_concurrency = 16 
 -  
 - # set variables 
 - concurrent_insert=2 
 
  
运行时修改                        (编辑:滁州站长网) 
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! 
                     |