3

私はオランダのウェブデザイナーです。私はWebアプリを最初から作成するのは初めてです。私は常に、CMSを使用し、それらをカスタマイズしてきました。

php/mysqlでオークションWebサイトを構築しています。これで完了です。最近、ストレージエンジンに関するいくつかの記事を読みました。

しばらくの間私を悩ませてきたいくつかの質問があります:


私のウェブサイトに最適なストレージエンジンの種類は何ですか?myIsam、innodbなどを使用しますか?

私が構築しているウェブサイトはオークションのウェブサイトであり、毎秒いくつかの読み取りと書き込みを処理する必要があります!! オークションが開いているか、閉じているか、一時停止しているか、現在の価格などを確認する必要があります。

データベース内のすべてのテーブルにアクセスできるわけではありません。これらは3つだけです。現在はすべてmyIsamです。これはいいですか?それらすべてを変更する必要がありますか?何も変更しませんか?私は本当に何をすべきかわかりません。私はそれらを変更しますか、これは私のウェブサイトに劇的な影響を与えますか?そして最後に、これらの変更は簡単に適用されるのでしょうか、それとも実行するのが難しいのでしょうか。


私が持っているもう一つの質問は、キャッシングシステムについてです。

私もそれらについていくつか読んだのですが、それらが私が持っている種類のウェブサイトに当てはまるかどうかはわかりません。データベースから取得するデータは大きく変化します。それらをキャッシュするのは便利ですか?たとえば、すべてのアイテムが変更されるわけではないため、オークションをキャッシュできます。しかし、オークションは数時間後には永遠に続くことはありません。

キャッシュシステムがそれにどのように適用できるかわかりません。または、これを間違った方法で見ています。繰り返しになりますが、このシステムが私に当てはまる場合、この変更には多大な労力がかかり、この努力によって多大な変更が加えられますか。


これらは私が持っているすべての質問です、それらは本当に一般的だと思います、私は何人かの人々がそれらを手伝ってくれることを願っています、私は本当にそれを感謝します。

よろしく

4

2 に答える 2

6

InnoDB

あなたが説明しているようなシナリオでは、私はためらうことなくInnoDBを使用します。あなたがおそらく必要とするであろうこれらを見てください:

  1. 行レベルのロック
  2. マルチステートメントトランザクション
  3. ロールバック

キャッシング

キャッシュを実行する方法はいくつかあります。ただし、フロントページが1秒間に10ヒットし、5分ごとに変化するとします。フロントページを純粋なhtmlファイルに保存し、cronジョブでそのページを5分ごとに更新するのは理にかなっています。

于 2009-11-10T09:37:06.973 に答える
6

私のウェブサイトに最適なストレージエンジンの種類は何ですか?myIsam、innodbなどを使用しますか?

一般に、ACID準拠と行レベルのロックのためにデフォルトでInnoDBに設定されているタスクの場合。(a)全文検索および(b)InnoDBでのパフォーマンスが十分でない特定の場合にのみ、MyISAMに頼ることを検討してください(これが重要であるということはかなりまれですが、一部のタイプのデータはMyISAMのプロファイルから恩恵を受けることができます)。

私が構築しているウェブサイトはオークションのウェブサイトです、

オークションのような機能は、人々のお金について話しているので、その背後にある一貫したトランザクションデータベースが本当に必要です。MyISAMはそれを提供できません。あなたのサイトはすべての非アトミックな相互作用のためにトランザクションを使用している必要があるので、例えばそれは不可能です。まったく同時に入札した場合、2人が同じオークションに勝ちます。

それは毎秒いくつかの読み取りと書き込みを処理する必要があります!!

それは膨大な量ではありません。ただし、InnoDBは通常、MyISAMの不幸なテーブルレベルのロックにより、大きなテーブルへの書き込みバイアスアクセスでもパフォーマンスが向上します。

私もそれらについていくつか読んだのですが、それらが私が持っている種類のウェブサイトに当てはまるかどうかはわかりません。

急いではいけません。一部のWeb作成者は、サイトが適切なパフォーマンスを発揮するにはmemcacheが必要になると想定しているようですが、実際にはそうではありません。適用するキャッシングソリューションは、更新時間と現在は古くなった情報を処理するための複雑さと潜在的な障害点を追加します。

したがって、本当に必要になるまで、キャッシュに頼らないでください。一般的なフロントエンドページがデータセットに対して複雑で低速なクエリを頻繁に実行する場合は、そうです。データベース自体にあるか、memcacheなどの外部ソリューションにあるかにかかわらず、そのための何らかのキャッシュがあると、速度が向上します。ただし、実際には、キャッシュの複雑さと不整合を追加するよりも、スキーマを変更してインデックスを追加する方が、クエリを安価にする方がよいでしょう。

そして、1秒間に「数回」の操作しか行わないサイトでは、それは必要ありません。

于 2009-11-10T10:22:55.013 に答える