zoukankan      html  css  js  c++  java
  • MySQL 优化步骤

    1.通过show status命令了解各种sql执行的频率

    2.定位执行效率较低的sql语句:查看mysql的慢查询日志

    3.通过explain分析低效率sql的执行计划

    4.使用explain extended 查看sql真正被执行前优化器做了哪些改写

    5.通过show profile 分析sql了解时间消耗在哪里

    6.查看机器配置,指三大件:cpu、内存、硬盘;查看mysql配置参数查看mysql运行状态;可以用mysqlreport工具来查看;

    my.cnf缓存优化
    在 my.cnf 中添加/修改以下选项:

    #取消文件系统的外部锁
    skip-locking

    #不进行域名反解析,注意由此带来的权限/授权问题
    skip-name-resolve

    #索引缓存,根据内存大小而定,如果是独立的db服务器,可以设置高达80%的内存总量
    key_buffer = 512M

    #连接排队列表总数
    back_log = 200
    max_allowed_packet = 2M

    #打开表缓存总数,可以避免频繁的打开数据表产生的开销
    table_cache = 512

    #每个线程排序所需的缓冲
    sort_buffer_size = 4M

    #每个线程读取索引所需的缓冲
    read_buffer_size = 4M

    #MyISAM表发生变化时重新排序所需的缓冲
    myisam_sort_buffer_size = 64M

    #缓存可重用的线程数
    thread_cache = 128

    #查询结果缓存
    query_cache_size = 128M

    #设置超时时间,能避免长连接
    set-variable = wait_timeout=60

    #最大并发线程数,cpu数量*2
    thread_concurrency = 4

    #记录慢查询,然后对慢查询一一优化
    log-slow-queries = slow.log
    long_query_time = 1

    #关闭不需要的表类型,如果你需要,就不要加上这个
    skip-innodb
    skip-bdb

    这边列出部分常用的状态信息查看语句:

    --查看MySQL本次启动后的运行时间(单位:秒)

    show status like 'uptime';

    --查看select语句的执行数

    show status like 'com_select';

    --查看insert语句的执行数

    show status like 'com_insert';

    --查看update语句的执行数

    show status like 'com_update';

    --查看delete语句的执行数

    show status like 'com_delete';

    --查看试图连接到MySQL(不管是否连接成功)的连接数

    show status like 'connections';

    --查看线程缓存内的线程的数量。

    show status like 'threads_cached';

    --查看当前打开的连接的数量。

    show status like 'threads_connected';

    --查看创建用来处理连接的线程数。如果Threads_created较大,你可能要增加thread_cache_size值。

    show status like 'threads_created';

    --查看激活的(非睡眠状态)线程数。

    show status like 'threads_running';

    --查看立即获得的表的锁的次数。

    show status like 'table_locks_immediate';

    --查看不能立即获得的表的锁的次数。如果该值较高,并且有性能问题,你应首先优化查询,然后拆分表或使用复制。

    show status like 'table_locks_waited';

    --查看创建时间超过slow_launch_time秒的线程数。

    show status like 'slow_launch_threads';

    --查看查询时间超过long_query_time秒的查询的个数。

    show status like 'slow_queries';

     

  • 相关阅读:
    MySQL 索引相关
    MySQL 事务操作
    MySQL 分支循环
    详细实例教程!集成华为虚假用户检测,防范虚假恶意流量
    快速集成华为AGC云存储服务-NodeJS
    随心译——无广告的专属实时翻译神器
    如何实现情景式精准触达用户,提高用户活跃与转化?
    快速集成华为AGC-AppLinking服务-iOS平台
    华为联运游戏或应用审核驳回:点击登录进入游戏,未显示欢迎栏
    视频App如何使用无线传输服务获得更好的播放体验
  • 原文地址:https://www.cnblogs.com/shenmiyang/p/14921959.html
Copyright © 2011-2022 走看看