欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
mysql分庫時(shí)PHP選擇連接數據庫的代碼

    在數據庫存放的數據很多的時(shí)候,常常對架構和數據庫優(yōu)化有一定要求,分庫分表也是其中的優(yōu)化方法之一。數據存儲在不同的數據庫中的時(shí)候,需要取得某個(gè)數據庫的連接進(jìn)行讀寫(xiě)操作,可以用下面的hash改進(jìn)過(guò)的算法實(shí)現

  1. function get_db_num($username){  
  2.     $db_num = 0;  
  3.     $database_split = $this->config->item('database_split');  
  4.     if(is_array($database_split)){  //在配置中已經(jīng)配置過(guò)了  
  5.         if(!isset($database_split['total'])){  //配置文件中配置的分庫總數  
  6.             show_error('database_split miss config `totle`');  
  7.         }  
  8.           
  9.         $max_num = 16;  //最大值  
  10.         $base_num = 0;  //基數  
  11.         $split_num = $database_split['total']; //分割值為2  
  12.         $hash_num = hexdec(substr(md5($username),0,1));  //這應該是一個(gè)hash算法,截取md5加密用戶(hù)名后的第一位并且轉化為十進(jìn)制,md5中每個(gè)char都是十六進(jìn)制數  
  13.         $gap_num = $max_num/$split_num;  //得到一個(gè)職位16/2==8  
  14.           
  15.         $k = 0;  //命名一個(gè)局部變量  
  16.         for($i = ($gap_num-1); $i <= $max_num; $i+=$gap_num){  //從7到16每次加8  
  17.             if ( ($hash_num >= $base_num) && ($hash_num <= $i) ){ $db_num = $k; break; }  //hash值是1到16隨機的,第一個(gè)條件滿(mǎn)足,第二個(gè)條件是和中位數比較,概率各一半,讀寫(xiě)都用此操作可以保證都在一個(gè)表中操作  
  18.             //如果第二個(gè)條件不滿(mǎn)足,$k增大,基數變?yōu)樯洗蔚谋容^值,再次比較,最終選出一個(gè)0和配置中total之間的一個(gè)值  
  19.             $k++; $base_num += $gap_num;  
  20.         }  
  21.     }  
  22.     return $db_num;  
  23. }  


本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
從分庫分表到Database Plus,重新認知ShardingSphere
史上最詳細的XGBoost實(shí)戰(下)
PHP高級工程師面試題目
程序員的算法趣題Perl版(四)
求數組乘集最大結果
數據庫分庫分表策略的具體實(shí)現方案
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久