① mysql讀寫分離原理是什麼
利用mysql proxy來實現的。
MySQL Proxy最強大的一項功能是實現「讀寫分離(Read/Write Splitting)」。基本的原理是讓主資料庫處理事務性查詢,而從資料庫處理SELECT查詢。資料庫復制被用來把事務性查詢導致的變更同步到集群中的從資料庫。當然,主伺服器也可以提供查詢服務。使用讀寫分離最大的作用無非是環境伺服器壓力。
② php連接mysql資料庫原理是怎樣的
現在使用PDO鏈接資料庫的較多
連接是通過創建 PDO 基類的實例而建立的。不管使用哪種驅動程序,都是用 PDO 類名。構造函數接收用於指定資料庫源(所謂的 DSN)以及可能還包括用戶名和密碼(如果有的話)的參數。
連接到 MySQL
<?php
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
?>
如果有任何連接錯誤,將拋出一個 PDOException 異常對象。如果想處理錯誤狀態,可以捕獲異常,或者選擇留給通過 set_exception_handler() 設置的應用程序全局異常處理程序。
處理連接錯誤
<?php
try{
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
foreach($dbh->query('SELECT*fromFOO')as$row){
print_r($row);
}
$dbh=null;
}catch(PDOException$e){
print"Error!:".$e->getMessage()."<br/>";
die();
}
?>
如果應用程序不在 PDO 構造函數中捕獲異常,zend 引擎採取的默認動作是結束腳本並顯示一個回溯跟蹤,此回溯跟蹤可能泄漏完整的資料庫連接細節,包括用戶名和密碼。因此有責任去顯式(通過 catch 語句)或隱式(通過 set_exception_handler() )地捕獲異常。
連接數據成功後,返回一個 PDO 類的實例給腳本,此連接在 PDO 對象的生存周期中保持活動。要想關閉連接,需要銷毀對象以確保所有剩餘到它的引用都被刪除,可以賦一個 NULL 值給對象變數。如果不明確地這么做,PHP 在腳本結束時會自動關閉連接。
關閉一個連接
<?php
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
//在此使用連接
//現在運行完成,在此關閉連接
$dbh=null;
?>
很多 web 應用程序通過使用到資料庫服務的持久連接獲得好處。持久連接在腳本結束後不會被關閉,且被緩存,當另一個使用相同憑證的腳本連接請求時被重用。持久連接緩存可以避免每次腳本需要與資料庫回話時建立一個新連接的開銷,從而讓 web 應用程序更快。
③ mysql資料庫 sql語句執行的原理
簡單點說:
1. 先執行聯接。外聯接(left join,right join,full join)分為3步:生成笛卡爾積;根據on語句篩選滿足a.id=b.tid的行;補齊null行;
2. 根據where子句,再一次進行篩選出a.id=10的行;
3. 執行select子句,取出被請求的欄位a.title和b.content