2010-05-19 20 views
0

我想優化我的數據庫的性能。我的問題是 - 什麼緩存在數據庫內存?例如:什麼數據實際上被緩存在InnoDB/MySQL中?

(表2列:鍵(索引),數據(未標號)更新(未標號)

Select * where updated=20100202 

(分貝將做一個掃描 - 將所掃描的行被保持在內存)

Select * where key = 20 

(分貝將參考指標 - 將所確定的行被保存在內存中)

回答

1

明,

這是一個棘手的問題。首先你必須選擇合適的發動機。如果您使用的是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/

http://dev.mysql.com/doc/refman/5.0/en/innodb-tuning.html

1

據我所知,與InnoDB的,索引和數據將被保存在內存中(如果innodb_buffer_pool_size足夠大)。

相關問題