Cache
記憶體數據庫結果 - 需要了解如何開始
我有一個項目即將推出,其中一個要求是記憶體本質上是只讀數據的內容,以減輕數據庫的壓力。我對記憶體如何與數據庫一起使用有點困惑。
記憶體是如何工作的*?我見過一種叫做查詢記憶體的東西,但它會記憶體查詢結果*嗎?還是只是查詢?無論如何,視圖不是一種記憶體形式嗎?
我只是在尋找正確方向的推動力。該項目將使用 MySQL 5.1 作為商店,因此任何可以消除我的困惑的連結都會有很大幫助。一般的Google搜尋只為我提供了查詢記憶體,由於我缺乏這方面的知識,我不確定這是否是我應該去的方向。
MySQL 查詢記憶體確實會記憶體查詢的結果,只要後續查詢完全相同,就會提供計算結果,而不是實際執行查詢。MySQL 也將跳過計算執行計劃。
要使用它,您可以在伺服器中打開它
my.cnf
或在查詢前使用SQL_CACHE提示。如果你在 my.cnf 中打開了它,你可以通過在查詢前面使用 SQL_NO_CACHE 來告訴 MySQL 不要記憶體結果。對錶的任何寫入(INSERT、UPDATE、DELETE 等)都會使查詢記憶體中來自該表的所有條目無效。
查詢記憶體的一個性能異常:它使用一種低效的算法來查找記憶體中的條目,因此創建更大的記憶體會導致性能下降。你應該嘗試用你自己的數據和查詢配置文件來改變它,但我上次做這個實驗時發現大約 256MB 是最佳選擇。大於或小於此,性能會變差。手冊建議“幾十兆”
您還可以使用諸如memcached之類的東西在 MySQL 之外實現記憶體。這對應用程序是不透明的,因此您必須在應用程序中添加額外的程式碼來處理對 memcached 的查找,然後,如果您錯過了,則在數據庫中進行查找並將結果儲存在 memcached 中。