`
lixiang170033
  • 浏览: 242 次
  • 性别: Icon_minigender_1
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

mysql分表

阅读更多
1.分表的原因
单表记录条数达到百万到千万级别时就要使用分表了,分表的目的就在于此,减小数据库的负担,缩短查询时间.

2分表的类型
* 垂直分表
将主码和一些列放到一个表,将主码和另一些列放到另一个表
应用场景:博客系统
文章标题,作者,分类,创建时间等,是变化频率慢,查询次数多,而且最好有很好的实时性的数据,
我们把它叫做冷数据。
而博客的浏览量,回复数等,类似的统计信息,或者别的变化频率比较高的数据,我们把它叫做活跃数据。
(其实在设计表时有时就会这样一对一的设计,不会在后来把大表垂直分割)
* 水平分表
当表数据很大的时候,通过横向切割来降低每个单表的压力,来提高性能

* 1,实现预见到会有大量的数据,使用MD5 (代码改动大,效果好,扩展性比集群好)
* 2,可以使用存储引擎(merge)建表  扩展性比MD5好,代码改动小,效果上没有MD5好
     create table u1(
id int not null
     )engine=myisam;

     create table u2(
id int not null
     )engine=myisam;

      create table u(
id int not null
     )engine=merge union=(u1,u2);

     如果原来表u就有大量的数据
* 对表进行备份 mysqldump -u用户 -p密码 -hIP -l -F 库 > 入径名例 d:/text.sql
* insert into u1 select * from u where id < ? ...
* 删除主表
但是当给表添加或更新数据时,就要判断到那个表去添加或更新,在编写程序是就要有业务逻辑的判断,比如用户和商品表
都有很多数据,都对他们进行分表,在编写程序时,就要有很多的逻辑,在人力上就有很大的支出。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics