1. 程式人生 > >php+MySQL的對用戶表分表,使用戶均勻分布

php+MySQL的對用戶表分表,使用戶均勻分布

manual mys 使用 分配 分布 div tro %u 由於

假如說我們目前已有一億個註冊用戶,要把這些用戶平均分配到100張表中,並且後續註冊的用戶也要均勻分配到這100張表

首先當用戶註冊時,如用戶名為“username”,用php的crc32()函數處理用戶名,得到一個數值4166911607,代碼如下

<?php
$str=‘username‘;
$num=sprintf("%u",crc32($str));

註意:由於 PHP 的整數是帶符號的,所以在 32 位系統上許多 crc32 校驗碼將返回負整數。 盡管在 64 位上所有 crc32() 的結果將都是正整數。因此你需要使用 sprintf()的“%u”格式符來獲取表示無符號 crc32 校驗碼的字符串。

然後,我用得到近個數值變量求模,$num%100=47,因此我們把‘username‘添加到第47個表中。

同樣的,當用戶登錄時我們就可以通過同樣的方法去第47個表中查找用戶名為‘username‘的數據

php+MySQL的對用戶表分表,使用戶均勻分布