mysql优化

mysql优化:
https://segmentfault.com/a/1190000006158186#articleHeader0


1 三范式:
   1NF:原子性。关系型数据库的都是
   2NF:没有重复的记录
   3NF:数据没有冗余。即能用外键关联,就使用外键。
   逆范式:为程序方便,保留冗余数据在1:N中的1端。


2,优化:
   1)show status:
      show session status like 'Com_%' //查看当前会话的命令
      show global status like 'Com_%' //查看全局的命令
      eg: 
      show status like 'Connections' //服务器连接次数
      show status like 'Uptime' // 启动的时间
      show status like 'Slow_queries' //慢查询次数,默认是10分才算是慢查询
      
      show variables like 'long_query_time' //慢查询的时间
      set long_query_time=2 //设置慢查询的时间
2)记录慢查询日记:
  bin\mysqld.exe -slow-query-log 
  在my.ini,会记录日记放在位置
3)Explain SQL语句:
  Id:
  type: consts是好的;ALL表示全表扫描
  possible_key: 可能使用的索引
  key:使用的索引
  rows: 扫描的行数
  Extra: 排序细节。文件排序,效率差
  
3,索引:
   1)适合索引的场景:
      作为查询的字段,适合建索引
 唯一性太差的,不适合;eg: 性别
 变化频繁的字段,不适合
    2)索引类型
 主键索引、唯一索引、普通索引、全文索引、复合索引
 创建索引:
     createcreate [unique|fullTxt]index on 表名(列名) --- drop index index_name on table
     alter table add primary key(列名)          --- alter table 表名 drop index 索引名
 查询索引:
     show index from 表名
 show keys  from 表名
 desc 表名
 索引的使用:
   a 多列索引,必须在使用最左边的列,否则不使用索引
b like 查询,使用%开关,不使用索引
c or 条件时,除非所有列都是有索引,否则不使用索引
d 类型是字符类型,数据要使用引号,否则不走索引
 索引的效率:
   show status like 'Handler_read_%' 中,hander_read_key高,则效率高;hander_red_rnd_key高,则效率低

4,常用优化手段:
   1) 导入数据时: 
       MyISAM引擎: 
    alter table XXX disable keys;
loading data
alter table XXX enable keys;
  Innodb:
     导入的数据按主键排序;
 set unique_checks = 0 ;关闭唯一性校验
 set autocommit=0; 关闭自动提交
    2)group by 时,自动加上order by null
3) 尽量使用join代替子查询
4)or/and 的条件都要使用索引

5, MyISAM 与InnoDB:
    1)前者:不支持事务、不支持外键。对于少量更新、删除时,速度快。
    2)后者:支持事务、外键。写效率较差,且占用空间多。
    
    MyISAM:可执行optimize table XXX 来释放空间

6,数据库参数设置:
   Innodb:
       innodb_additional_mem_pool_size = 64M
       innodb_buffer_pool_size = 1G
   MyISAM:
       调整key_buffer_size
       
    

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
       
  
  
 















  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值