• MySQL优化


    mysql最大连接数设置:
    在配置文件的[mysqld]下面
    max_connections = 1000 #mysql的最大连接数,默认如果不写的话是100个
    wait_timeout = 10 超时时间
    命令:
    show status like '%Threads_connected%';查看当前连接数
    show processlist;
    1、mysql缓存
    queryCache:
    1、数据有变化的时候,缓存就失效了??
    2、select语句必须一模一样才能走缓存,只要有一点不一样就不会走
    3、任何一个包含不确定的函数(比如now(),current_date())的查询不会被缓存。
    开启qcache:
    在配置文件的[mysqld]下面
    query_cache_type = on#开启缓存
    query_cache_size = 10M #总大小
    query_cache_limit = 1M #select查询结果超过设置值,就不会被缓存
    SHOW VARIABLES LIKE '%query_cache%';查看queryCache状态
    开启profile:
    set @@profiling=1;#设置profile开启
    select @@profiling;#查看profile是否被开启
    show profiles;#查看所有的profile
    show profile for query n;查看指定的sql语句
    queryCache使用状态:
    Qcache_free_memory Query Cache 中目前剩余的内存大小
    Qcache_hits 缓存命中次数
    Qcache_inserts 多少次未命中然后插入
    Query Cache 命中率= Qcache_hits / ( Qcache_hits + Qcache_inserts );
    Qcache_free_blocks Query Cache中目前还有多少剩余的blocks。如果该值显示较大,则说明Query Cache 中的内存碎片较多了,可能需要寻找合适的机会进行整理。
    如果这个值非常大,可以使用FLUSH QUERY CACHE;语句来清理查询缓存碎片以提高内存使用性能。该语句不从缓存中移出任何查询。
    2、innodb 存储引擎
    支持外键、支持事物,行级锁,innodb
    MyISAM
    MyISAM表不支持事务
    MyISAM表不支持外键(Foreign Key)。
    Innodb是行级锁,myisam是表锁
    开启innodb_buffer_pool
    在配置文件的[mysqld]下面
    innodb_buffer_pool_size=20M #设置bufferpool大小
    innodb_buffer_pool_dump_now=on#默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘。
    innodb_buffer_pool_load_at_startup = off#默认为关闭OFF。如果开启该参数,停止MySQL服务时,InnoDB将InnoDB缓冲池中的热数据保存到本地硬盘。
    SHOW VARIABLES LIKE '%innodb_buffer_pool%';
    #查看bp的设置
    SHOW STATUS LIKE '%Innodb_buffer_pool%';
    查询Innodb_buffer_pool当前使用情况:
    innodb_buffer_pool_bytes_data 已经使用了多少
    innodb_buffer_pool_read_requests 总共查询bp的次数
    innodb_buffer_pool_reads 从物理磁盘中获取到数据的次数
    读写分离:
    主:只负责写数据
    从:只负责读数据
    偶发性延时的话:控制写入速度
    频发性延时:拆分数据库实现多点写入
    把数据分散到不同的数据库上
    explain sql;
    desc sql;
    type这一列:
    all<index<range<ref<eq_ref<const,system<null
    效率最差到最好


    2、mysql sql语句的生命周期
    3、索引
    普通索引:所有列都可以添加索引
    create index 'my_index' on bkl(name);
    alter table blk add index my_index2 (sex);
    #上面这两种方式都是添加普通索引

    alter table blk add index my_index3 (sex,name);#添加组合索引


    alter table blk add unique index my_index4 (phone);#添加唯一索引
    create unique index 'my_index5' on bkl(phone);
    #添加唯一索引

    添加主键索引:
    alter table blk modify id int primary key;
    删除索引:
    alter table blk drop index my_index2;

    唯一索引:unique
    主键索引:primary ky
    组合索引、多列索引:


    4、慢查询
    SHOW VARIABLES LIKE '%query%';#查询慢查询日志是否开启
    set global slow_query_log=on;#开启慢查询日志
    set global long_query_time=1;#设置记录查询超过多长时间的sql
    set global slow_query_log_file='/opt/data/slow_query.log';#设置mysql慢查询日志路径,此路径需要有写权限
    mysqldumpslow命令参数如下:
    -s,是表示按照何种方式排序,c、t、l、r分别是按照记录次数、时间、查询时间、返回的记录数来排序,ac、at、al、ar,表示相应的倒叙;
    -t,是top n的意思,即为返回前面多少条的数据;
    -g,后边可以写一个正则匹配模式,大小写不敏感的
    例子:#比如说要按照sql执行时间最长的前20条sql
    mysqldumpslow -s t -t 20 -g 'select' /opt/data/slowquery_2016050921.log
    通过慢查询日志,就可以找到执行效率不高的sql

    5、sql语句怎么去优化

    6、锁
    如果修改的数据的时候条件是索引列就是行级锁,
    条件不是索引列的时候才是表级锁。
    show processlist;
    show engine innodb status;#一般日志里有dblock、lock等字样
    7、事务

  • 相关阅读:
    Essential C++ 3.1 节的代码练习——哨兵方式
    Essential C++ 3.1 节的代码练习——指针方式
    《搞不定人,你如何带团队?》读书记录
    selenium+python,解决selenium弹出新页面,无法定位元素的问题(报错:Unable to locate element:元素)
    selenium 元素(class_name、link_text、css_selector)定位方法
    selenium+python+eclipse 实现 “问卷星”网站,登录与检查登录示例!
    selenium IDE中log的保存与查看方法
    selenium IDE工具页面介绍!
    selenium IDE 使用方法整理
    selenium IDE的3种下载安装方式
  • 原文地址:https://www.cnblogs.com/lqcjlu/p/6262980.html
Copyright © 2020-2023  润新知