Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2814014
  • 博文数量: 587
  • 博客积分: 6356
  • 博客等级: 准将
  • 技术积分: 6410
  • 用 户 组: 普通用户
  • 注册时间: 2008-10-23 10:54
个人简介

器量大者,福泽必厚

文章分类

全部博文(587)

文章存档

2019年(3)

2018年(1)

2017年(29)

2016年(39)

2015年(66)

2014年(117)

2013年(136)

2012年(58)

2011年(34)

2010年(50)

2009年(38)

2008年(16)

分类: LINUX

2016-06-03 10:48:13

1:explain sql   在mysql5.6 下无论是insert/update/delete 都是可以的
2:show create  table tbname
3:只导出表结构
mysqldump -uroot -p'password'  --no-data  库名> database.sql
4:  show index from  tablename; ##一般一个表上最多有5个索引
5:show table status like '表名'; ##对于平均长度和行数而言myisam是准确的,innodb是个约数
6:show global/session status like 'created_tmp_%table';  ##变量名
7:pt-query-digest  进行慢查询日志分析
8:时间统计
>set profing=1;
>show  profile for query  1;
9:select sql_no_cache; ##表示不使用cache
例如:

10:mysql下一个连接就是一个线程
11:show full processlist;
12:不使用query cache     ##设置set的时候,务必要修改/etc/my.cnf
>set global query_cache=0;
>set global query_cache_size=0;
13:innodb & tokudb
innodb:  数据安全性,并发性完胜myisam
tokudb:非常适合写入密集型,占用空间少的情景,支持ACID
14:mysql隔离级别建议修改为transaction_isolation
15:query cache mysql5.6下默认是关闭的,建议关闭
16:mysql备份通过percona Xtrabackup  是最好的备份方式
17:大sql 拆分成小sql,因为sql也只能在1核上计算,大sql很容易把db读死
18:不要使用select * 或尽量少用
19:秒杀使用redis 做队列,删除的时候用limit
20:批量插入数据使用load data ,尽量不要使用insert into  select ......
21:  尽量使用非null
22:  通过外键去关联
23:  一般不同时使用myisam和innodb 引擎
24:show session/global status like 'handler_read%';
handler_read_key 1       表示使用了1个索引
handler_read_next 7     表示索引被用来读取7行数据
handler_read_priv  71   表示这个索引从反方向读取了71行数据
25:General log  :sql日志,用于记录所有的sql
set global general_log=1;
set global log_output='table';
开启这个,日志量会比较大,早晨磁盘大量的写入一般不要在生产环境下启用
26:慢查询日志
[mysqld]
slow_query_log=1
slow_query_log_file=filename
long_query_time=0.2
log_output=FILE
27:  二进制日志
[mysqld]
log_bin=文件名
从mysql5.1 开始可以指定row或mixed 为二进制文件格式

28:show full processlist;

29:  show  engine innodb  status  \G  ##查引擎状态
下面是优化的相关内容
1:整合ddl 
将多条alter语句整合成1条sql是一种简单的优化
2:去掉重复的索引
pt-duplicate-key-checker
3:删除不用的索引
pt-index-usage

4:监控无效的索引,通过key_len 
5:常见数据类型优化
 5.1:bigint&int---最多到43亿
 5.2:存储ip地址 varchar(16) VS unsigned int
 5.3:Datetime  占8个自己,timestamp占4个字节
 5.4:ENUM适合存储静态类型,例如:性别
 5.5:用char(32)保存MD5 值,固 定长度使用char而非varchar
6:不要使用select  *
7:mysql query cache 禁掉
8:应用程序使用memcached或redis缓存,记得更新表的时候,同时更新缓存!
9:计数器或排行榜使用redis来实现
10:写入峰值,热点事件引发写入峰值,业务现象,主库负载高,相应慢,从库延迟
解决方法:batch insert
通过insert into table values (x),(y),(z);  
每次写入50个value!  ##这个是合理的值!
11:烦人的大分页
select * from table where x=1 order  by time  limit 1000000,10;
修改为
select * from table where pk in (select pk from table where x=1 order by time limit 1000000,10)
12:避免长尾连接引发的雪崩  pt-kill
阅读(1046) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~