专栏名称: 数据分析与开发
伯乐在线旗下账号,分享数据库相关技术文章、教程和工具,另外还包括数据库相关的工作。偶尔也谈谈程序员人生 :)
目录
相关文章推荐
数据中心运维管理  ·  讲一讲开关电源并联均流技术…… ·  22 小时前  
数据中心运维管理  ·  如何有效处理数据中心停机 ·  昨天  
数据中心运维管理  ·  突发!又一储能电站发生火灾 ·  4 天前  
数据中心运维管理  ·  别错过!配电间、配电室等防火措施,一篇全搞定 ·  3 天前  
数据中心运维管理  ·  如何为布线环境选择合适的网络电缆标签 ·  2 天前  
51好读  ›  专栏  ›  数据分析与开发

数据库水平切分方法

数据分析与开发  · 公众号  · 数据库  · 2017-01-17 21:05

正文

请到「今天看啥」查看全文



在大中型项目中,在数据库设计的时候,考虑到数据库最大承受数据量,通常会把数据库或者数据表水平切分,以降低单个库,单个表的压力。我这里介绍两个我们项目中常用的数据表切分方法。当然这些方法都是在程序中使用一定的技巧来路由到具体的表的。首先我们要确认根据什么来水平切分?在我们的系统(SNS)中,用户的UID贯穿系统,唯一自增长,根据这个字段分表,再好不过。

方法一:使用MD5哈希

做法是对UID进行md5加密,然后取前几位(我们这里取前两位),然后就可以将不同的UID哈希到不同的用户表(user_xx)中了。


function getTable( $uid ){

$ext =  substr ( md5($uid) ,0 ,2 );

return "user_".$ext;

}

通过这个技巧,我们可以将不同的UID分散到256中用户表中,分别是user_00,user_01 ...... user_ff。因为UID是数字且递增,根据md5的算法,可以将用户数据几乎很均匀的分别到不同的user表中。







请到「今天看啥」查看全文