我想優化我的數據庫的性能。我的問題是 - 什麼緩存在數據庫內存?例如:什麼數據實際上被緩存在InnoDB/MySQL中?
(表2列:鍵(索引),數據(未標號)更新(未標號)
Select * where updated=20100202
(分貝將做一個掃描 - 將所掃描的行被保持在內存)
Select * where key = 20
(分貝將參考指標 - 將所確定的行被保存在內存中)
我想優化我的數據庫的性能。我的問題是 - 什麼緩存在數據庫內存?例如:什麼數據實際上被緩存在InnoDB/MySQL中?
(表2列:鍵(索引),數據(未標號)更新(未標號)
Select * where updated=20100202
(分貝將做一個掃描 - 將所掃描的行被保持在內存)
Select * where key = 20
(分貝將參考指標 - 將所確定的行被保存在內存中)
明,
?這是一個棘手的問題。首先你必須選擇合適的發動機。如果您使用的是InnoDB,則可以設置緩衝池,並且將緩存所有數據。什麼數據? Everithing。數據的確是索引,關於表格的元信息等。請記住,InnoDB是緩衝池。
對於MyISAM,緩存被分成不同的緩衝區。例如,您可以設置key_buffer_size,並且MyISAM將緩存密鑰信息。
對於您的特定示例,在第一個查詢中它將掃描所有表。如果你有一個足夠大的buffer_pool,它將在內存中。第二個是一樣的。
其他的事情。你應該總是有一個這樣的querys索引。
約BUFFER_POOL相關鏈接:
http://www.mysqlperformanceblog.com/2007/11/03/choosing-innodb_buffer_pool_size/
據我所知,與InnoDB的,索引和數據將被保存在內存中(如果innodb_buffer_pool_size足夠大)。