下面通過創(chuàng)建100張表來演示下1億條數(shù)據(jù)的分表過程,具體請看下文代碼。
創(chuàng)新互聯(lián)公司主要為客戶提供服務(wù)項(xiàng)目涵蓋了網(wǎng)頁視覺設(shè)計(jì)、VI標(biāo)志設(shè)計(jì)、營銷推廣、網(wǎng)站程序開發(fā)、HTML5響應(yīng)式成都網(wǎng)站建設(shè)、手機(jī)網(wǎng)站開發(fā)、微商城、網(wǎng)站托管及成都網(wǎng)站維護(hù)公司、WEB系統(tǒng)開發(fā)、域名注冊、國內(nèi)外服務(wù)器租用、視頻、平面設(shè)計(jì)、SEO優(yōu)化排名。設(shè)計(jì)、前端、后端三個(gè)建站步驟的完善服務(wù)體系。一人跟蹤測試的建站服務(wù)標(biāo)準(zhǔn)。已經(jīng)為成都玻璃鋼坐凳行業(yè)客戶提供了網(wǎng)站改版服務(wù)。
當(dāng)數(shù)據(jù)量猛增的時(shí)候,大家都會(huì)選擇庫表散列等等方式去優(yōu)化數(shù)據(jù)讀寫速度。筆者做了一個(gè)簡單的嘗試,1億條數(shù)據(jù),分100張表。具體實(shí)現(xiàn)過程如下:
首先創(chuàng)建100張表:
$i=0;
while($i=99){
echo
"$newNumber
\r\n";
$sql="CREATE
TABLE
`code_".$i."`
(
`full_code`
char(10)
NOT
NULL,
`create_time`
int(10)
unsigned
NOT
NULL,
PRIMARY
KEY
(`full_code`),
)
ENGINE=MyISAM
DEFAULT
CHARSET=utf8";
mysql_query($sql);
$i++;
下面說一下我的分表規(guī)則,full_code作為主鍵,我們對full_code做hash
函數(shù)如下:
$table_name=get_hash_table('code',$full_code);
function
get_hash_table($table,$code,$s=100){
$hash
=
sprintf("%u",
crc32($code));
echo
$hash;
$hash1
=
intval(fmod($hash,
$s));
return
$table."_".$hash1;
}
這樣插入數(shù)據(jù)前通過get_hash_table獲取數(shù)據(jù)存放的表名。
最后我們使用merge存儲引擎來實(shí)現(xiàn)一張完整的code表
CREATE
TABLE
IF
NOT
EXISTS
`code`
(
`full_code`
char(10)
NOT
NULL,
`create_time`
int(10)
unsigned
NOT
NULL,
INDEX(full_code)
)
TYPE=MERGE
UNION=(code_0,code_1,code_2.......)
INSERT_METHOD=LAST
;
這樣我們通過select
*
from
code就可以得到所有的full_code數(shù)據(jù)了。
以上介紹就是本文的全部內(nèi)容,希望對大家有所幫助。
function?test_value($num){
$new_value?=?'';
$test_arr??=?array('100000000'='億','10000'='萬');//從大到小排列你想要的組合
$statu?=?true;
foreach?($test_arr?as?$key?=?$value)?{
if($num=$key){
$new_value=intval($num/$key).$value;
$statu?=?false;
break;
}
}
if($statu){
$new_value=$num;
}
return?$new_value;
}
//像下面這樣調(diào)用函數(shù)即可
echo?test_value(15123);??//調(diào)用函數(shù)
echo?'br?/';
echo?test_value(112256);??//調(diào)用函數(shù)
echo?'br?/';
echo?test_value(100000000);??//調(diào)用函數(shù)
echo?'br?/';
echo?test_value(100000001);??//調(diào)用函數(shù)
//?輸出結(jié)果
//?1萬
//?11萬
//?1億
//?1億
理論上是可以的,但效率上就有問題了,這么大量的數(shù)據(jù)一般不會(huì)放一張表里面,都會(huì)考慮分表,然后考慮索引、數(shù)據(jù)庫主從、服務(wù)器配置等,提高查詢效率php+mysql可以處理億級的數(shù)據(jù)嗎