2011-11-10 47 views
3
  • 數據庫中的所有表有一個時間戳列[float] 接着參數列[integer] (通常小於5,但超過1)的任意的量,和一個值列 [float
  • 所有查詢都沒有任何連接,它們基於給數據庫一組參數,並返回時間戳和值列。
  • 行數以低10幾百萬計。
  • 用戶數量少於10個。
  • 讀取次數多於寫入次數,但兩者都可以同時使用。
  • 應符合ACID屬性。

回到當天所有的MySQL被選中,但這是一個有爭議的問題。 SQLite在本地計算機上是快速和輕鬆的,但在這個例子中,它需要是一個合適的服務器/客戶端數據庫。直到這一點,沒有發生優化,除了索引。如何爲沒有連接的查詢優化MySQL服務器?

編輯:

我沒有提到它正常,但交通不是問題。也就是說,它不是真正符合某些音量標準的優化,而是純速度的優化。

+1

你的問題是什麼?標題是「我可以爲沒有聯接的查詢優化MySQL服務器嗎?」你說「所有查詢都沒有任何連接」......所以......有點困惑。 –

+0

我對優化查詢不感興趣。我有興趣優化數據庫本身。也就是說,存儲引擎,緩衝區大小等。我只是想我會指定查詢的性質,以便更容易理解數據庫的使用方式。 – c00kiemonster

+0

讀取和寫入的卷(每秒事務)是多少? – Ian

回答

1
  • 使用InnoDB進行ACID支持。

  • 內存,內存,內存。您可以爲讀操作進行的最佳MySQL調優優化是增加innodb_buffer_pool_size。但是當然不會太高,以至於它會比物理內存更大,因爲這會導致mysqld進入交換。

  • 將您的表的主鍵沿着您最常搜索的列結構化。也就是說,利用主鍵上的InnoDB聚簇索引。

+0

使用InnoDB時,複合(多列)主鍵會影響性能嗎? – c00kiemonster

+0

確保組合主鍵中最左邊的列是您查詢的列。 –