PHP那些事 資料庫快取原理

2021-08-22 18:42:02 字數 1589 閱讀 4065

如果後台應用接收到瀏覽器端的查詢請求後,每次都與資料庫連線讀取資料,勢必增加資料庫的負擔。而往往有大量的請求是重複的,我們可以把這些重複的資訊採用快取技術儲存下來,重複使用,這樣,在某些情況下可以大大提高程式的效能。

1,快取函式

cache_write函式接受$string引數,寫到$file檔案中。注意var_export函式,作用是:

此函式返回關於傳遞給該函式的變數的結構資訊,它和 var_dump() 類似,不同的是其返回的表示是合法的 php **。您可以通過將函式的第二個引數設定為 true,從而返回變數的表示。

這些引數可以是陣列或常量,而這些陣列或常量通常為從資料庫中取出的記錄,或非序列化(unserialize)物件後得到的資料。這些都可以快取到本地的文字檔案中。

cache_write函式很簡單,需要讀取資料時,先判斷快取是否存在,存在的話就不去連線資料庫取資料,而是直接讀出快取的文字檔案,直接產生了陣列或常量等型別的資料,可以直接使用。

<?php

//檔名func.inc.php

define("cachedir", "./"); //定義快取資料夾

function cache_write($file, $string, $type = 'array')

elseif($type == 'constant')

}$strlen = file_put_contents(cachedir.$file, $string);

chmod(cachedir.$file, 0777);

return $strlen;

}function cache_read($file)

function cache_delete($file)

2,寫快取和讀取的示例

<?php

//寫快取

include "func.inc.php";

$arr = array (1, 2, array ("a", "b", "c"));

cache_write('test.cache.php', $arr); //快取檔案 test.cache.php

?>

<?php

//讀快取

include "func.inc.php";

$var = cache_read('test.cache.php');

print_r($new_var);

print_r($var);

foreach ($var as $k=>$v)

?>

3,效能分析

快取之所以能提高效能,是通過本地磁碟空間換網路訪問速度和資料庫伺服器訪問時間的結果。

a = 本機讀寫時間

b = 本機占用空間

c = 網路傳輸時間

d = 資料庫伺服器磁碟時間

可以估算到,如果資料庫與應用程式存在於一台機器時,主要是 a 與 d 的比較,效果可能並不明顯,甚至還要糟一點。因為資料庫系統針對磁碟訪問經過了精心優化,是作業系統對檔案的普通讀寫無法相比的。

如果本機的磁碟訪問效率不佳,有時從區域網的資料庫上取得資料,可能比從本機的緩訪問資料還快,這種情況比較少見。而隨著請求數量的大量增加,快取的效果就會明顯起來。

2023年9月7日

資料庫的那些事

一 常用的sql命令 1.select 獲取資料 2.update 更新資料 3.delete 刪除資料 4.insert into 插入新資料 5.create database 建立新資料庫 6.alter database 修改資料庫 7.create table 建立新錶 8.alter t...

資料庫設計的那些事

1,表和字段的設計規範,當然每個公司有其自己的規範 1 要有可讀性 eg studentaddress,不要設計成stuaddress 2 表意性 eg student,不要設計成ch1 3 盡量不要縮寫 eg studentaddress,不要設計成stuadd 2,字段型別的選擇 在進行資料庫資...

資料庫的那些事(全是乾貨)

談到資料庫,大家第一想法就是怎麼去優化,怎麼讓查詢操作更快。我認為最好的方式就是從開始資料庫設計的時候就要盡量考慮周全。如果不幸是個老專案,就得從優化入手了。接下就從設計和優化談一下我的一些認識和經驗。1 資料庫的設計 乙個好的資料庫設計方案對於資料庫的效能常常會起到事半功倍的效果。資料庫的設計包含...