私は、teamspeak 3サーバーをセットアップしたいです。データベースとしてSQLiteとMySQLを選択できます。まあ、私は通常「本番環境でSQLiteを使用しない」傾向があります。しかし、一方で、それはteamspeakサーバーです。さて、これをググってみましょう...私はこれを見つけました:
- 速度
SQLite3はMySQLデータベースよりもはるかに高速です。これは、ファイルデータベースが常にUNIXソケットよりも高速であるためです。チャンネルの編集をリクエストしたとき、MySQLデータベース(127.0.0.1)では約0.5〜1秒かかり、SQLite 3ではほぼ瞬時(0.1秒)でした。[...]
http://forum.teamspeak.com/showthread.php/77126-SQLite-vs-MySQL-Answer-is-here
SQLiteとMySQLの議論を始めたくありません。 彼の議論は有効ですか?彼の言うことは真実だとは想像できません。しかし残念ながら、私はこの質問に自分で答えるのに十分な専門家ではありません。
TeamSpeak開発者は、SQLiteとMySQLのdbアーキテクチャにいくつかの大きな違いがあるかもしれません。これは速度の大きな違いを説明します(これは想像できません)。
最初のアクセス時はSQLiteでより速く表示されます
SQLiteのアクセス時間は、最初はより速く表示されますが、これは少数のユーザーがオンラインの場合です。 SQLiteは非常に単純なアクセスアルゴリズムを使用します。高速ですが、同時実行性は処理しません。
データベースが大きくなり始めると、同時アクセスの量が減り始めます。サーバーが複数のリクエストを処理する方法は完全に異なっており、より並行性が高くなるようにより複雑で最適化されています。たとえば、SQLiteは、更新が行われている場合、テーブル全体をロックし、注文をキューに入れます。
RDBMSは拡張性を高める多くの追加作業を行います
たとえば、MySQLは、1人のユーザーでもアクセスQUEUEを作成し、1回のユーザーごとの実行のみを許可するのではなく、テーブルを部分的にロックします。
これにより、1人のユーザーの接続が遅くなりますが、将来的には何百人ものユーザーがオンラインになり、この場合、SQLiteの単純な「全テーブルをロックして単一のクエリを実行する」プロシージャがサーバーを占有します。
SQLiteは、シンプルさと自己完結型データベースアプリケーションのために作られています。
SQLiteがデータベースに同時に10の同時アクセス書き込みを行うことを期待している場合、SQLiteを使用してデータベースへのデータの書き込みと読み取りを常に行う100ユーザーアプリケーションは必要ありません。このようなシナリオ用に設計されたものではなく、リソースを無駄にします。
TeamSpeakのシナリオを考えると、SQLiteで大丈夫です。一部のビジネスでも大丈夫です。一部のWebサイトでは、新しいコンテンツを追加しない限り読み取り専用のデータベースが必要です。
この種の用途では、SQLiteは安価で実装しやすく、自己完結型の完璧なソリューションであり、仕事を成し遂げます。
SQLiteとMySQLを個人的にテストしたことはありませんが、逆の例( たとえば )をWebで見つけるのは簡単です。あなたはそれほどそれほど宗教的ではない質問をします:その議論は有効ですか?
第一に、議論の本質はいくぶん奇妙です。 Unixソケットは、データベースサーバーとの通信に使用されます。 「ファイルデータベース」は、通信がコンパイルされたインターフェイスを介しているという事実を指しているようです。 SQLiteの用語では、 サーバーレス です。ほとんどのデータベースはデータをファイルに保存するため、「ファイルデータベース」という用語は少し誤解を招きます。
データベースのパフォーマンスには、次のような複数の要因が関係します。
インターフェースをコンパイルすることは、これらの最初と最後に影響します。サーバーなしのデータベースが他のデータベースより優れていることを妨げるものは何もありません。ただし、データベースサーバーは通常、数百万行のコードであり、SQLiteよりもはるかに大きくなっています。この多くは追加の機能をサポートしています。その一部は、最適化の改善とアルゴリズムの改善をサポートしています。
ほとんどのパフォーマンスの質問と同様に、答えは環境内のデータでシステムを自分でテストすることです。サーバーレスであることは、自動パフォーマンスの向上ではありません。サーバーが存在しても、データベースは「より良い」ものにはなりません。これらは、異なる最適化ポイント用に設計された異なるアプリケーションです。
関連する違いは、SQLiteがはるかに単純なロックアルゴリズム(単純なグローバルデータベースロック)を使用することです。
詳細なロックの使用(MySQLや他のほとんどのDBサーバーと同様)はmuchより複雑で、データベースユーザーが1人だけの場合は遅くなりますが、より多くの同時実行を許可する場合は必要です。