数据库分表分库以及SQL优化
刘嘉威
hello world
展开
-
MySQL存储引擎小知识
MySQL数 据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL++ API自己做一个引擎。下面介绍几种数据库引擎:ISAM:ISAM是一个定义明确且历经时间考验的数据表转载 2016-03-03 15:21:01 · 448 阅读 · 0 评论 -
数据库连表查询如何确定驱动表
驱动表]的定义为:1)指定了联接条件时,满足查询条件的记录行数少的表为[驱动表];2)未指定联接条件时,行数少的表为[驱动表](Important!)。left join 则左边的为驱动表right join 则右边的为驱动表EXPLAIN 结果中,第一行出现的表就是驱动表(Important!)对驱动表可以直接排序,对非驱动表(的字段排序)原创 2016-03-03 16:11:37 · 2925 阅读 · 0 评论 -
分表分库简单公式
分表分库的策略比仅分库或者仅分表的策略要更为负责,一种分表分库的路由策略如下:1、中间变量=主键ID%(库数量*每个库的表数量)2、库=取整(中间变量/每个库表数量)3、表=中间变量%每个库的表数量原创 2016-03-03 17:22:07 · 997 阅读 · 0 评论 -
MySql与Oracle的差别
一、并发性 并发性是oltp数据库最重要的特性,但并发涉及到资源的获取、共享与锁定。 mysql:mysql以表级锁为主,对资源锁定的粒度很大,如果一个session对一个表加锁时间过长,会让其他session无法更新此表中的数据。虽然InnoDB引擎的表可以用行级锁,但这个行级锁的机制依赖于表的索引,如果表没有索引,或者sql语句没有使用索引,那么仍然使用表级锁。原创 2016-03-03 17:24:40 · 2367 阅读 · 1 评论 -
SQL优化
SQL优化1、多用简单SQL2、少用子查询和复杂查询3、少用复杂join,并注意join驱动表是否最优4、where条件中不使用函数,避免无法使用索引5、注意类型隐式转换6、事务快速提交,不要频繁反复提交JOIN优化1、把结果集小的表作为驱动表,减少nested-loop循环次数2、优先优化nested-loop的内层循环效率3、保证被驱动表与驱动表原创 2016-03-03 18:20:29 · 416 阅读 · 0 评论 -
MYSQL分库分表总结
单库单表 单库单表是最常见的数据库设计,例如,有一张用户(user)表放在数据库db中,所有的用户都可以在db库中的user表中查到。 单库多表 随着用户数量的增加,user表的数据量会越来越大,当数据量达到一定程度的时候对user表的查询会渐渐的变慢,从而影响整个DB的性能。如果使用mysql, 还有一个更严重的问题是,当需要添加一列的时候,mysql会锁表,期间所有转载 2016-03-04 09:43:31 · 1463 阅读 · 0 评论