Chinaunix首页 | 论坛 | 博客
  • 博客访问: 79561
  • 博文数量: 31
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 340
  • 用 户 组: 普通用户
  • 注册时间: 2013-04-02 20:25
文章分类

全部博文(31)

文章存档

2015年(2)

2014年(29)

我的朋友

分类: Mysql/postgreSQL

2014-08-29 18:10:57

1. 表设计要兼顾3nf跟性能,特殊时候可弃3nf保性能
2. 字段类型要选和用的占用空间小的,能用定长就用定长
3. 避免null,null可索引,但处理较not null复杂

4. 根据查询条件跟区分度设计索引
5. 复合索引遵循leftmost规则,使用的时候不遵循leftmost可导致复合索引中部分索引失效
6. 考虑覆盖索引,极大提高性能,让查询从索引中获取所有结果
7. innodb非主索引存放主键值,取得主键值再查询聚集索引
8. Myisam索引存放数据记录指针
9. 复合索引设计不一定把区分度最高的列放前面。range小的列放前面,可让复合索引使用的时候能使用更多的索引

10. order by,group by, distinct需要排序,排序是个费时操作,尽量通过索引避免
11. mysql的子查询应该同join方式比较,看哪个性能更高。
12. limit s, offset 必须用explain然后优化
13. join全是nested loop,通常驱动表记录要少,连接列上最好有索引(特别是非驱动表)
14. sql的优化,explain是少不了的

15. 需要事务选innodb, myisam开启并发插入
16. select 不加锁
17  RR级别mysql可防止幻读(MVCC+GAP)

18 读压力大,可使用读写分离(mysql proxy, 变形虫). 时延跟事务是跟问题
19. 写压力大,采用复制是无效的。可采用切分(垂直切分,水平切分),将表分布到多个数据库中或将大表切分到多个库中,均衡写压力。
20. 使用缓存(memcached,redis等)缓存经常访问的数据。




阅读(1140) | 评论(0) | 转发(0) |
0

上一篇:7.事务

下一篇:9.锁

给主人留下些什么吧!~~