// 2个库
// 4个表
$ku_num = 2;
$biao_num = 4;
$arr = NULL;
for ($i = 1 ; $i < 1025 ; $i++) {
$ku = bcmod($i, $ku_num);
$biao = bcmod(ceil($i / $biao_num), $biao_num);
if (empty($arr[$ku][$biao])){
$arr[$ku][$biao] = 1;
} else {
$arr[$ku][$biao]++;
}
}
echo '<pre>';
print_r(
$arr
);
echo '<hr>';
echo '</pre>';
die;
简单解释一下,我们假装有2个数据库,每个库有4个数据表
for循环了1025条数据,$i就代表数据的主键id。
取模法分库分表的具体思想就是,按照当前数据的id对数据库的个数取余,可以得到当前数据应该插入到哪个库内
然后,用当前数据的id 对 数据库个数 做除法 商数 取整,取整之后对表取模,就可以选择到对应的表。
bcmod是PHP自带的 取模函数。