2010-08-16 92 views
4

我有一個分析數據庫,用於製作複雜的查詢。每個查詢都會生成數千行。我想將這些結果存儲在某種磁盤緩存中,以便稍後獲得結果。我無法將結果插回到結果來自的數據庫中,因爲該數據庫是隻讀的。這個緩存的要求是。快速單表數據庫

  • 插入行非常快。 MySQL是一個非啓動器。
  • 快速過濾,結果
  • 沒有多表連接需要
  • 沒有交易

我很感興趣地聽到任何SQL或NoSQL的解決方案,可以幫助做到這一點的排序。

+1

MySQL有不同的引擎類型 - 內存會很快,但如果系統關閉IIRC,則不會持久化。 – 2010-08-16 18:46:37

+1

您是否試過MySQL的LOAD DATA INFILE語句或INSERT的多行版本?它們比每行使用一個INSERT要快得多。 – 2010-08-16 18:59:34

+0

SQLite3你應該看看。/Yoda – hlynur 2010-08-16 19:04:38

回答

2

你看過SQLite嗎?當它們需要查詢功能時,它被應用程序(即Thunderbird,FF)使用,但在其他用途​​中則不是完整的關係數據庫。

+0

SQLite只提供一個插入命令,因此比提供多行插入命令的MySQL稍差。 – bradgonesurfing 2010-08-17 05:42:48

+0

哇,很高興知道。 – user151841 2010-08-17 13:36:47

0

如果你有大量的RAM,可能會想嘗試SQLite的內存數據庫:http://www.sqlite.org/inmemorydb.html

以較少的RAM,嘗試SQLite的臨時數據庫(進一步在頁面下方 - 見上面的超鏈接)。這些也使用內存中緩存,但如果數據庫變大,部分可能會刷新到磁盤。

0

您還應該查看Advantage數據庫。本地服務器是免費的,它支持SQL和非SQL解決方案。非SQL解決方案肯定會比SQL方法更快。該表可以被指定爲緩存,因此它將盡可能長時間保留在內存中以便快速插入。 Advantage Database Server

1

您沒有指定平臺,但在Windows上可以使用內置的Esent數據庫引擎。它將提供排序和高性能的數據持久性。