规范、经验

尽量不用NULL列

query cache:读写比例决定

innodb索引一定要在后面加上主键列

参数配置

inno_lock_table:[color=red]导致死锁的重现方式[/color]

自增长:innodb_autoinc_lock_mode=2插入性能最高
AUTO-INC locking完成插入后立即释放,不等事务结束

分类:
insert-like:所有insert
insert/replace [select],load data等
simple-inserts: 最简单insert
insert/replace
bulk inserts:不确定行数
insert/replace select,load data
mixed-mode inserts:一部分自增长,一部分确定
insert values (value1),(valueN);

方式控制innodb_autoinc_lock_mode
0:表锁.5.1.22之前

1:默认值。
simple-inserts:互斥量
bulk inserts:传统表锁autoinc locking
如果不回滚,仍是连续的。
并且sql复制是安全的
mixed-mode inserts:一部分自增长,一部分确定
2:采用互斥量
优点:性能最高
缺点:自增值不连续
基于sql的复制,主从不一致

[color=red] myisam、innodb实现方式不同,myisam作为innodb从,需要注意这个问题
myisam:表锁,没有并发插入问题
[/color]

group
行数过多
按规则拆为多表,进行group,再做sum

联合索引(a,b,c),a范围查询,group by b
如果数量不多,可以拆为多个等值group,再进行聚合

结果集过大导致临时表放不下
tmp_table_size、max_heap_table_size两个中较小者

set @@session.tmp_table_size=xxx;

# SQL 规范
http://dev.mysql.com/doc/refman/5.5/en/server-sql-mode.html
-- sql_mode
ONLY_FULL_GROUP_BY
不要启用:NO_UNSIGNED_SUBTRACTION:两个整数运算的结果为有符号型


从全局表获取一个ID
delete t from tb as t
,(select (@mid:=id) as id from tb order by id limit 1) as t2
where t.id=t2.id;

select @mid;


MYSQL升级时
innodb_fast_shutdown必须设为0
完成所有的undo页回收(full purge),insert buffer合并,flush dirty page


优化经验
http://cocos.iteye.com/blog/1041894
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值