加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

MySQL功能调优

发布时间:2022-07-04 03:32:22 所属栏目:MySql教程 来源:互联网
导读:MySQL性能调优: 1 Mysql工作原理 1.1 mysql体系结构: 连接池 sql接口 分析器 优化器 查询缓存 存储引擎 文件系统 管理工具 1.2 永久定义: 修改配置文件/etc/my.cnf [mysql] 变量名=值 1.3 临时定义: mysqlset (global) 变量= 2 性能调优 2.1 访问数据
        MySQL性能调优:

  1 Mysql工作原理
  1.1 mysql体系结构:
 
  连接池
 
  sql接口
 
  分析器
 
  优化器
 
  查询缓存
 
  存储引擎
 
  文件系统
 
  管理工具
 
  1.2 永久定义:
 
  修改配置文件/etc/my.cnf
 
  [mysql]
 
  变量名=值
 
  1.3 临时定义:
 
  mysql>set (global) 变量=
 
  2 性能调优
  2.1 访问数据时,出结果特别慢。分析可能是由哪些原因导致的?
 
  (1)硬件配置低:查看应用设备的使用率CPU  内存   存储(硬盘)
 
  利用top,sar,uptime,free等;
 
  (2)网络带宽: 使用网络测速软件 网速;
 
  (3)提供数据库服务软件版本低:
 
  2.2 并发及连接控制
 
  mysql> show variables like “max_connections”;  #允许的最大并发连接数
 
  mysql> show variables like "connect_timeout"; #建立连接时,三次握手的超时时间
 
  mysql> show variables like "wait_timeout"; #建立连接后,等待断开连接的超时时间
 
  查看当前已使用的连接数:
 
  mysql>show global status like “max_used_connections”;
 
  查看默认的最大连接数:
 
  mysql> show variables like "max_connections";
 
  理想比率:已使用的连接数/连接并发量<=85%
 
  2.3 缓存参数控制
 
  key_buffer_size  #用于myisam引擎的关键索引缓存大小
 
  sort_buffer_size  #为每个要排序的线程分配此大小的缓存空间
 
  read_buffer_size  #为顺序读取表记录保留的缓存大小
 
  read_rnd_buffer_size #为排序结果读取表记录保留的缓存大小
 
  允许重复使用的线程的数量
 
  mysql> show  variables like  "thread_cache_size";
 
  为所有线程缓存打开表的数量。
 
  table_open_cache=2000
 
  mysql> show  variables  like "table_open_cache";
 
  查询缓存相关参数设置?
 
  MySQL> show   variables  like "query_cache%";
 
  查询缓存写锁有效 存储引擎(MYISAM)
 
  query_cache_wlock_invalidate | OFF    
 
  query_cache_type             0|1|2
 
  0 关闭   不存储
 
  1 开启   无条件存储
 
  2 开启   指定存储才存储
 
  查询缓存统计信息?
 
  MySQL> show  global  status  like  "qcache%";
 
  Qcache_hits            0      #查询缓存成功的次数(就是在缓存中找到查询的结果)
 
  Qcache_inserts          0       #总的
 
  Qcache_lowmem_prunes   0  #每次缓存达到一定数值,重新清空的次数,清空的次数越大代表缓存的使用不合理(总是被用完)
 
  2.4 Mysql日志类型
 
  (1)错误日志:记录数据库服务在启动和运行过程中产生的信息,默认启用
 
  /etc/my.cnf中的log-error=/var/log/mysqld.log
 
  (2)binlog日志:默认没有启用。
 
  (3)查询日志:记录所有执行过的SQL命令,默认没有启用
 
  vim /etc/my.cnf
 
  [mysqld]
 
  general-log  #默认存储位置 /var/lib/mysql  
 
  默认名称:主机名.log
 
  (4)慢查询日志:记录超过指定时间显示查询结果的SQL命令。默认超时时间10s。
 
  slow-query-log #启用慢查询日志
 
  slow-query-log-file=文件名 #指定日志名称
 
  long-query-time=数字 #指定超时时间
 
  默认存储位置 /var/lib/mysql  
 
  默认名称:主机名-slow.log
 
  [root@ser54 ~]# mysqldumpslow /var/lib/mysql/主机名-slow.log  >sql.txt
 
  #查看慢查询日志,并把查询超时的查询语句保存下来
 
  log-queries-not-using-indexes #记录未使用索引的查询。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读