mysqlデータベース設計

黄舟
リリース: 2016-12-19 16:33:43
オリジナル
1364 人が閲覧しました

Innodb テーブルはその逆です。行レベルのロック テーブルです。
インターネット サービス (有料サービス、インタラクティブ製品、ニュース システムなどを除く) は、一般に読み取りが多く、書き込みが少なくなります。 myisam テーブルを使用する方が適切です。
テーブル設計
固定長テーブル: すべての列のフィールド長は固定長です。 mysql マニュアルを確認してください。可変長フィールドは VARCHAR、BLOB、または TEXT です。 int char はすべて固定長であり、固定長テーブルは多くのスペースを占有します。
動的テーブル: フィールドはすべて固定長ではありません。
固定長テーブルは動的テーブルよりも高速に取得されます。

ソフトウェア システムの設計では、テーブルごとに明確な機能を区別する必要があります。たとえば、メッセージ テーブルからのデータとユーザー テーブルからのユーザー情報を同時に取得する必要がある場合、ユーザー テーブルには次のようになります。クエリの場合、一部の操作では left や join などのさまざまな複雑な SQL ステートメントが使用され、MySQL 関数も使用される場合があります。アクセス数や閲覧数が多いインターネットサービスの場合、同時閲覧するとデータ量が膨大になってしまい大変です。データが変更されない場合、冗長な書き込み操作を使用しながら、すべてのデータを一度に読み取ることができるように、一般的に使用されるテーブルに冗長フィールドを設けることが最善です。

テーブルを設計するときは、テーブル内のすべてのフィールド タイプが占めるバイト数を合計し、それに予想値 (例: 100W のデータを保存する) を掛けます。これは、テーブル全体が将来占有する容量です。 。

テーブルの分割とデータベースの分割
テーブルの分割とは、テーブルを N 個の複数のコピーにコピーし、内容のないデータをそれぞれ格納することです。HASH アルゴリズムを使用してデータを格納し、どのテーブルに配置するかを決定します。
たとえば、ユーザー テーブル user は伝統的に 1 つのテーブルであり、テーブルを user_01、user_02 などにコピーすることを意味し、これらはすべて同じ形式で異なるユーザー データを保存します。

ライブラリの削除はテーブルの解体と似ており、ライブラリのコピーです。

テーブルまたはデータベースの解体には多くの HASH アルゴリズムがあり、その主な目的は、各テーブルのデータ量を平均化するために使用されます。一部のユーザーは影響を受けますが、ほとんどの問題は発生しません。欠点は、取得が不便で、別の方法を見つける必要があることです。

BBSやブログなど、初期段階でのトラブルを避けるためにDiscuz製品を使用しているウェブサイトがたくさんあります。インターネット上にはこの製品に関する多くの導入方法や最適化方法が記載されています。私はいくつかのWebサイトで詳しく調べたことはありません。データベースの場合は、マスター・スレーブ方式でデータベースの読み込みと書き込みを分離してパフォーマンスを向上させる方法が主流ですが、個人的にはこの方法はデータ量がある程度の規模に達すると限界があると感じています。同時実行性と読み取りおよび書き込み操作は改善されず、データは徐々に制限を超えて蓄積されます。

インターネット サービスは大量のデータとリクエストを処理する必要があるため、設計や開発の際にあまり学術的にならず、データベースやプログラムの「美しい」設計を実現しようと努めないでください。パフォーマンスが最も重要です。

上記は mysql データベース設計の内容です。さらに関連する内容については、PHP 中国語 Web サイト (www.php.cn) に注目してください。


関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート