mysql讀寫分離 PHP類

2021-09-01 10:06:38 字數 2158 閱讀 3030

自己實現了php的讀寫分離,並且不用修改程式

優點:實現了讀寫分離,不依賴伺服器硬體配置,並且都是可以配置read伺服器,無限擴充套件

缺點:錯誤轉移不購明確,現只有3次嘗試機會,失敗了就會選擇其他的伺服器.當伺服器恢復時,需要手動去消除錯誤日誌不人性化

修改於discux x 的mysql類

配置檔案

"db"=>array(

'1'=>array(

'dbhost'=> '127.0.0.1',

'dbuser' => 'root',

'dbpw' => '***',

'dbcharset' => 'utf8',

'pconnect' => '0',

'dbname' => 'test',

'tablepre' => 'w_',

),'2'=>array(

'dbhost'=> '127.0.0.1',

'dbuser' => 'root',

'dbpw' => '***',

'dbcharset' => 'utf8',

'pconnect' => '0',

'dbname' => 'test2',

'tablepre' => 'w_',

),'3'=>array(

'dbhost'=> '127.0.0.1',

'dbuser' => 'root',

'dbpw' => '***',

'dbcharset' => 'utf8',

'pconnect' => '0',

'dbname' => 'test3',

'tablepre' => 'w_',

),'writes'=>array('2','3'),

'reads'=>array('2','1'),

'broken'=>array(),

'broken_file'=>str_replace('\\','/',dirname(__file__)) ."/____mysql_broken_file.php",

//'broken_file'=>array(),

)類檔案

line

function

';foreach (debug_backtrace() as $error)

$phperror .= '';

$helplink = "".rawurlencode($dberrno)."&dberror=".rawurlencode($dberror);

@header('content-type: text/html; charset='.$_g['config']['output']['charset']);

echo '';

echo "php backtrace

$sql error

$dberror

";exit();

}function delete($table, $condition, $limit = 0, $unbuffered = true) elseif(is_array($condition)) else

$sql = "delete from ".$this->table($table)." where $where ".($limit ? "limit $limit" : '');

return $this->query($sql, ($unbuffered ? 'unbuffered' : ''));

}function insert($table, $data, $return_insert_id = false, $replace = false, $silent = false)

function update($table, $data, $condition, $unbuffered = false, $low_priority = false) elseif(is_array($condition)) else

$res = $this->query("$cmd $table set $sql where $where", $unbuffered ? 'unbuffered' : '');

return $res;

}function implode_field_value($array, $glue = ',')

return $sql;}}

mysql讀寫分離

5.讀寫分離適用與讀遠大於寫的場景,如果只有一台伺服器,當select很多時,update和delete會被這些select訪問中的資料堵塞,等待select結束,併發效能不高。對於寫和讀比例相近的應用,應該部署雙主相互複製。6.可以在從庫啟動是增加一些引數來提高其讀的效能,例如 skip inno...

讀寫分離 MySQL

1 what 讀寫分離 讀寫分離,基本的原理是讓主資料庫處理事務性增 改 刪操作 insert update delete 而從資料庫處理select查詢操作。資料庫複製被用來把事務性操作導致的變更同步到集群中的從資料庫。2 why 那麼為什麼要讀寫分離呢?因為資料庫的 寫 寫10000條資料到or...

mysql讀寫分離

在資料庫集群架構中,讓主庫負責處理事務性查詢,而從庫只負責處理select查詢,讓兩者分工明確達到提高資料庫整體讀寫效能。當然,主資料庫另外乙個功能就是負責將事務性查詢導致的資料變更同步到從庫中,也就是寫操作。即主從複製和讀寫分離是離不開的 1 分攤伺服器壓力,提高機器的系統處理效率 讀寫分離適用於...