2009-05-15 6 views
1

この質問とは無関係の理由から、いくつかのプロジェクトではより一般的なMySQLではなく、いくつかのSQLiteデータベースを実行する必要があります.SQLiteとMySQLの比較ディスクI/Oに関するパフォーマンスはです(データベースはUSB 2.0ペンドライブでホストされます)。MySQL対SQLite + UNIQUEインデックス

データベース速度の比較ページ(http://www.sqlite.org/speed.html)を読んだところ、SQLiteのパフォーマンスには驚きましたが、これらのベンチマークは少し古くなっています。私はよりアップデートされたベンチマーク(SQLite 3とMySQL 5) 、もう一度私の主な関心事は、CPU/RAMではなく、ディスクの性能です

また、私はSQLiteに関する多くの経験がないので、InnoDB MySQLエンジンのTRIGGER(更新時、削除時)イベントと同様のものがあれば興味があります。私はまた、MySQLが持っているようにユニークなフィールドを宣言する方法を見つけることができませんでした。ただPRIMARY KEY - 私は行方不明のものがありますか?

最終的な質問として、良い(できればフリーまたはオープンソースの)SQLiteデータベースマネージャが存在するかどうかを知りたいと思います。

+2

最終的な質問を新しい質問としてまとめてください。 – ninesided

+2

あなたはおそらく、MySQLがSQLiteよりも一般的だと誤解しているでしょう。 http://www.sqlite.org/mostdeployed.htmlを参照してください。 –

+0

WOW!本当に素晴らしい、SQLiteのパワー! :) –

答えて

7

そこにいくつかの質問:ディスクI/O制限の面では

  1. 、私は、データベースエンジンが違いの多くを作ることを想像できないでしょう。ちょっとしたことがあるかもしれませんが、アプリケーションが望むようにデータを高速に読み書きできるかどうかということがほとんどだと思います。 MySQLまたはSQLiteのどちらでも同じ量のデータを使用しているので、あまり変わらないと思います。
  2. SQLiteはトリガーをサポートしています:CREATE TRIGGER Syntax
  3. SQLiteはUNIQUE制約:column constraint definition syntaxをサポートしています。
  4. 私のSQLiteデータベースを管理するには、FirefoxアドオンSQLite Managerを使用します。それはかなり良いです、私がそれをしたいすべてを行います。ディスクI/O制限の面では
+1

これはかなり徹底的です。マネージャーのために、SQLiteman(sqliteman.com/)を見てみましょう。いくつかの厄介な側面があります(たとえば、開いているSQLファイルを変更するたびに、開いている場合でも新しいダイアログボックスが表示されます)。ただし、クロスプラットフォームであり、主な機能(任意のSQLの実行、表の検査と変更、ビューの作成と実行など)を行います。 –

+0

ありがとう! =)すばらしい答え! –

+4

違いは、MySQLはおそらくすべてをRAMにできるだけキャッシュするということです。 Sqliteはできません - データベースが常にアンロードされることを期待しています(実際にはアプリケーションの再起動時です)。 MySQLは、I/O全体が少なくて済むように、ディスクからデータをキャッシュする時間が長くて済みます。どのサーバーシステムでもこれが可能です。 –

2

は、私は、データベースエンジンが 違いをたくさん作ることを想像しません。

データはUNORDEREDに格納されているため、RANGEはオンになります。原理的には、いくつかのHDD SEEK操作を実行する必要があります。

Mysql/InnoDBでは、データはPRIMARY KEYでソートされているため、RANGEはオンになります。DISK SEEK操作(理論上は1つ)を使用してPRIMARY KEYを実行します。

これをまとめると、 myISAM - データは順序付けられていないHDDに書き込まれます。 priキーがAUTO INCREMENT固有のフィールドでない場合、PRI-KEYの範囲が遅くなります。

InnoDB - データは順序付けされ、フラッシュドライブには問題があります(データは挿入後の再書き込みが必要なため追加書き込み)。 PRI KEYレンジの読み取りは非常に高速で、書き込みは遅くなります。

InnoDBはフラッシュメモリには適していません。シークは非常に速いため(データを並べ替えることであまり効果を上げることはない)、注文を維持するために必要な追加の書き込みはフラッシュメモリに損傷を与えます。

myISAM/innoDBは、従来のフラッシュドライブ(私はSQLiteについてはわかりません)に大きな違いをもたらしますが、mysql/myisamを使用したいと思います。

1

実際にSQLiteインターフェイスとしてSQLiteSpy http://www.portablefreeware.com/?id=1165を使用することをお勧めします。 これは便利なREGEXPのようなものをサポートしています。

+0

それは私の質問と関係がありますか? –

+3

"最後の質問として、良い(できれば無料のオープンソースの)SQLiteデータベースマネージャが存在するかどうかを知りたいと思います。 – NikoRoberts

関連する問題