zoukankan      html  css  js  c++  java
  • mysql优化参考(五)-服务器参数

    可以用客户端连接后通过命令来查看:

    show variables;

    show variables like '%connection%';

    参考地址:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

    一、通用(General)

    • datadir=/var/data/mysql     数据文件存储目录
    • socket=/var/lib/mysql/mysql.sock  服务器和客户端在同机会使用这个socket文件进行连接
    • pid_file=/var/lib/mysql/mysql.pid    mysql的进程ID
    • default_storage_engine=InnoDB      默认存储引擎
    • skip-grant-tables                     如果忘记密码可以通过这个跳过验证,免密登录

    二、编码(Character)

    • character_set_client    客户端数据的编码集,可以动态连接指定
    • character_set_connection  客户端连接传输信息的字符集,可以动态指定
    • character_set_results  服务端返回客户端结果的字符集
    • character_database  数据库默认字符集
    • character_set_server  mysql服务器的默认字符集

    三、连接(Connection)

    • max_connections=151        mysql的最大连接数
    • max_user_connections=0   mysql指定单个用户的最大连接数,默认是0,表示不限制
    • connect_timeout               连接超时时间
    • back_log                      表示连接数满了之后,新的请求有多少可以暂存在堆栈中,超出的部分则不再接受请求
    • wait_timeout                     关闭一个非交互连接需要等待的时间
    • interactive_timeout        关闭一个交互连接需要等待的时间 

    四、日志(log)

    • log_error        错误日志存储地址
    • log_bin               二进制日志存储地址
    • binlog_do_db       指定需要存储到二进制日志的数据库
    • binlog_ignore_db 指定不需要存储到二进制日志的数据库
    • sync_binlog         多少次写日志后同步磁盘
    • general_log         ON|OFF 是否开启查询日志
    • general_log_file   查询日志的存储地址
    • slow_query_log    ON|OFF是否开启慢查询日志
    • slow_query_log_file 慢查询日志的存储文件地址
    • long_query_time   慢日志中需要的一个参考值,多少查询时间算是慢查询

    ------------恢复内容开始------------

    可以用客户端连接后通过命令来查看:

    show variables;

    show variables like '%connection%';

    参考地址:https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html

    一、通用(General)

    • datadir=/var/data/mysql     数据文件存储目录
    • socket=/var/lib/mysql/mysql.sock  服务器和客户端在同机会使用这个socket文件进行连接
    • pid_file=/var/lib/mysql/mysql.pid    mysql的进程ID
    • default_storage_engine=InnoDB      默认存储引擎
    • skip-grant-tables                     如果忘记密码可以通过这个跳过验证,免密登录

    二、编码(Character)

    • character_set_client    客户端数据的编码集,可以动态连接指定
    • character_set_connection  客户端连接传输信息的字符集,可以动态指定
    • character_set_results  服务端返回客户端结果的字符集
    • character_database  数据库默认字符集
    • character_set_server  mysql服务器的默认字符集

    三、连接(Connection)

    • max_connections=151        mysql的最大连接数
    • max_user_connections=0   mysql指定单个用户的最大连接数,默认是0,表示不限制
    • connect_timeout               连接超时时间
    • back_log                      表示连接数满了之后,新的请求有多少可以暂存在堆栈中,超出的部分则不再接受请求
    • wait_timeout                     关闭一个非交互连接需要等待的时间
    • interactive_timeout        关闭一个交互连接需要等待的时间 

    四、日志(log)

    • log_error        错误日志存储地址
    • log_bin               二进制日志存储地址,避免数据丢失(恢复)
    • binlog_do_db       指定需要存储到二进制日志的数据库
    • binlog_ignore_db 指定不需要存储到二进制日志的数据库
    • sync_binlog         多少次写日志后同步磁盘
    • general_log         ON|OFF 是否开启查询日志
    • general_log_file   查询日志的存储地址
    • slow_query_log    ON|OFF是否开启慢查询日志
    • slow_query_log_file 慢查询日志的存储文件地址
    • long_query_time   慢日志中需要的一个参考值,多少查询时间算是慢查询
    • log_slow_admin_statements

    五、缓存(cache)

    • key_buffer_size     索引缓存区的大小,只对MyIsAM生效
    • query cache  8之后废弃
      • query_cache_size  查询缓存的大小
        • show status like '%Qcache%';
        •  
        • Qcache_free_blocks:缓存中相邻内存块的个数,数值比较大表示内存碎片比较多
        • Qcache_free_memory:查询缓存中剩余的内存大小
        • Qcache_hits:命中缓存的次数(总统计)
        • Qcache_inserts:没命中多少次(没命中会导致插入)
        • Qcache_lowmem_prunes:多少条内存因为内存不足而被清除
        • Qcache_not_cached:没有被cache的只读查询数量
        • Qcache_queries_in_cache:当前缓存的query数量
        • Qcache_total_blocks:当前cache中block的数量
      • query_cache_limit  超出此大小的数据将不被缓存
      • query_cache_min_res_unit 缓存块最小大小
      • query_cache_type
        • 0 or OFF :不缓存,query_cache_size最好对应设置为0
        • 1 or ON:除了SELECT SQL_NO_CACHE外,其他都缓存
        • 2 or DEMAND:仅缓存SELECT SQL_CACHE
    • sort_buffer_size   每个需要排序的线程分配该大小的缓冲区
    • max_allowed_packet=32M  限制server接受的数据包大小
    • join_buffer_size=2M  表示关联缓存的大小
    • thread_cahce_size 
      • (show status) Threads_cached  代表当前此时此刻线程缓存有多少空闲线程
      • (show status) Threads_connected
      • (show status) Threads_created
      • (show status) Threads_running

    六、InnoDB

      日志机制

    • redo log: 一致性、持久性。  先写入日志,再提交;相当于两阶段提交,或者二次持久化(先持久化到日志【磁盘】,再持久化到数据库【磁盘】。也就是说日志持久化作为数据库持久化的担保)。
    • undo log:原子性支持。相当于命令回滚,会对应事务的一个反向操作,比如delete一条记录,undo log就会对应生成一条insert记录。在事务回滚的时候执行undo log,来回滚操作。
    • innodb_buffer_pool_size  指定大小的内存来缓冲数据和索引,最大可以设置物理内存的80%
    • innodb_flush_log_trx_commit  主要控制innodb将log buffer中的数据写入日志文件并flush磁盘的时间点,值分别为0 1 2(dml commit->log buffer->oss buffer->file system;一种直接读入oss buffer并触发异步同步 应该是1,一种是直接读入oss buffer,并每秒触发fsync,应该是0;还有一种是读取log buffer,并每秒读入oss buffer并触发fsync,应该是2)
    • innodb_thread_concurrency  设置innodb的线程并发数,默认为0表示不受限制,如果要设置建议跟服务器的cpu核心数一致或者是cpu核心数的两倍
    • innodb_log_buffer_size 此参数确定日志文件所用的内存大小,以M为单位
    • innodb_log_file_size 此参数确定日志文件的大小,以M为单位
    • innodb_log_files_in_group 以循环方式(redo log)将日志写入到多个文件
    • read_buffer_size         mysql读入缓冲区大小,对表进行顺序扫描的请求将分配到一个读入缓冲区
    • read_rnd_buffer_size   mysql随机读的缓冲区大小
    • innodb_file_per_table  此参数确定为每张表分配一个新的文件,不配置的话,一个表只有一个文件(表结构文件,数据文件统一存储)

    注1  binlog:通用的操作日志,可用于数据恢复,保存的是原始的操作内容,与存储引擎无关。

    注2 ACID:

      • 原子性(atomic):MVCC(多版本高并发控制) -undo机制
      • 一致性(Consistency):redo log一致性,二次提交
      • 隔离性(Isolation):锁机制
      • 持久性(Durability):redo log最终也是要从内存(日志)->硬盘(日志)->内存(数据)->硬盘(数据)

    注3 DEMAND:需求

     

  • 相关阅读:
    ORACLE 查看进程数,已执行任务数, 剩余任务数,删除指定任务
    ORACLE 收集统计整个用户数据
    解决Hystrix dashboard Turbine 一直 Loading…… 及其他坑
    利用 Maven 构造 Spring Cloud 微服务架构 模块使用 spring Boot构建
    AES加解密
    JAVA POI XSSFWorkbook导出扩展名为xlsx的Excel,附带weblogic 项目导出Excel文件错误的解决方案
    JAVA 文件的上传下载
    shell启停服务脚本模板
    JAVA 设计模式之 原型模式详解
    JAVA 设计模式之 工厂模式详解
  • 原文地址:https://www.cnblogs.com/gabin/p/13730139.html
Copyright © 2011-2022 走看看