検索
ホームページデータベースmysql チュートリアルmysqlシャーディングパーティションデータベースパーティションテーブル

データベース内のデータ量が一定のレベルに達した後、システム パフォーマンスのボトルネックを回避します。データは、パーティショニング、シャーディング、データベース、テーブルを使用して処理する必要があります。

推奨コース: MySQL チュートリアル

mysqlシャーディングパーティションデータベースパーティションテーブル

シャーディング (シャーディングに似ています)

シャーディングは、データベースを複数の物理ノードにスケールアウトすることです。これは効果的な方法です。その主な目的は、単一ノードのデータベース サーバーの I/O 容量の制限を打破し、データベースのスケーラビリティの問題を解決することです。シャードという言葉は「断片」を意味します。データベースを大きなガラス片として扱い、ガラスが割れた場合、その小さな破片のそれぞれをデータベースの断片 (データベース シャード) と呼びます。データベース全体をいくつかの部分に分割するプロセスはシャーディングと呼ばれます。これはシャーディングと翻訳できます。

正式には、シャーディングは、大規模なデータベースを複数の物理ノードに分散するパーティション化スキームとして単純に定義できます。各パーティションにはスライスと呼ばれるデータベースの特定の部分が含まれており、パーティション分割方法は任意であり、従来の水平パーティションと垂直パーティションに限定されません。シャードには、複数のテーブルまたは複数のデータベース インスタンスの内容を含めることができます。各シャードはデータベース サーバー上に配置されます。データベース サーバーは、1 つ以上のデータ シャードを処理できます。サーバーは、クエリのルーティングと転送のためにシステムに必要であり、実行のためにクエリによってアクセスされるデータを含むシャードまたはシャード コレクション ノードにクエリを転送する役割を担います。

スケールアウト/スケールアップと垂直分割/水平分割

Mysql の拡張計画にはスケールアウトとスケールアップが含まれています。

スケールアウト(水平拡張)とは、アプリケーションを水平方向に拡張できることを意味します。一般に、データセンター アプリケーションの場合、スケール アウトとは、さらに多くのマシンが追加された場合でも、アプリケーションがこれらのマシンのリソースを有効に活用して、自身の効率を向上させ、優れたスケーラビリティを実現できることを意味します。

スケールアップ (垂直方向の拡張) は、アプリケーションが垂直方向に拡張できることを意味します。一般に、単一マシンの場合、スケールアップは価値があり、コンピューティング ノード (マシン) が CPU コアやストレージ デバイスを追加し、より大きなメモリを使用すると、アプリケーションはこれらのリソースを最大限に活用して効率を向上させることができます。優れた拡張性。

MySql のシャーディング戦略には、垂直シャーディングと水平シャーディングが含まれます。

垂直 (垂直) 分割: テーブル間の IO 競合を解決するための機能モジュールによる分割を指します。例えば、注文データベース、商品データベース、ユーザーデータベース… このように、複数のデータベースのテーブル構造は異なります。

水平 (水平) 分割: 同じテーブルのデータをブロックに保存し、それを別のデータベースに保存して、単一テーブルのデータ量増加によるプレッシャーを解決します。これらのデータベースのテーブル構造はまったく同じです。

テーブル構造の設計は縦に分割されています。一般的なシナリオには、

a) 大きなフィールドの垂直セグメント化が含まれます。基本テーブルのアクセス パフォーマンスを向上させるために、別のテーブルに大きなフィールドを個別に構築します。原則として、データベース内の大きなフィールドは、パフォーマンスが重要なアプリケーションでは避けるべきです (

b)。目的に応じてフィールドを垂直に分割します。使用。例えば、企業のマテリアル属性を、基本属性、販売属性、購買属性、製造属性、財務会計属性などに従って垂直にセグメント化することができる。例えば、電子商取引やWeb2.0システムにおいて、ユーザー属性の設定が多い場合、基本的なよく使う属性とあまり使わない属性を縦に分割し、テーブル構造の設計を横に分割することができます。一般的なシナリオとしては、

a) が挙げられます。たとえば、オンライン電子商取引 Web サイトでは、注文テーブル データの量が多すぎるため、年間レベルと月次レベルに分割されています

b ). Web 2.0 Web サイトの登録ユーザー、オンライン アクティブ ユーザーが多すぎます。ユーザー ID の範囲などに従って、該当するユーザーとユーザーに関連の深いテーブルを水平方向に分割します。

c) たとえば, フォーラムのトップの投稿, ページングの問題を伴うため、各ページのピン留めされた投稿を表示する必要があります. この場合、ピン留めされた投稿を取得するときにすべての投稿のテーブルから読み込まれないように、ピン留めされた投稿を横に分割できます

#テーブルとパーティション

テーブルの分割とは、表面的には、テーブルを複数の小さなテーブルに分割することを意味します。パーティショニングとは、テーブルのデータを N 個のブロックに分割することを意味します。これらのブロックは、同じディスクまたは異なるディスク上。ディスク上。

テーブル分割とパーティショニングの違い

1、実装方法の点での違い

mysql の分割テーブルは、実際の分割テーブルです。多くのテーブル。それぞれの小さなテーブルは完全なテーブルであり、3 つのファイル (MyISAM エンジン: .MYD データ ファイル、.MYI インデックス ファイル、および .frm テーブル構造ファイル) に対応します。

2. データ処理に関しては、

データはテーブルに分割された後、サブテーブルに格納されます。メインテーブルは単なるシェルであり、データアクセスは各サブテーブルで発生します。 -テーブル。パーティショニングにはテーブルのパーティショニングという概念はありません。パーティショニングは、データを格納するファイルを多数の小さなブロックに分割するだけです。パーティション化されたテーブルは依然として 1 つのテーブルであり、データ処理は依然として自分自身で完了します。

3. パフォーマンスの向上

テーブルを分割すると、単一テーブルの同時実行能力が向上し、ディスク I/O パフォーマンスも向上します。パーティションはディスク I/O ボトルネックを突破するため、ディスクの読み取りおよび書き込み機能を改善して mysql のパフォーマンスを向上させたいと考えています。

現時点では、パーティションとサブテーブルのテストの焦点は異なります。サブテーブルの焦点は、データにアクセスする際の mysql の同時実行性を向上させる方法であり、パーティションの焦点は、ディスクの読み取りおよび書き込み機能を突破する方法です。これにより、mysql のパフォーマンスが向上するという目標があります。

4. 実装の難しさに関して言えば、テーブルを分割する方法はたくさんありますが、マージを使用してテーブルを分割するのが最も簡単な方法です。この方法はパーティショニングと同じくらい簡単で、プログラム コードに対して透過的です。他のテーブルパーティショニング方法を使用する場合は、パーティショニングよりも面倒になります。パーティション化の実装は比較的単純で、パーティション化されたテーブルの作成は通常のテーブルの構築と何ら変わりはなく、コード側に対して透過的です。

パーティショニングの適用可能なシナリオ

1. テーブルのクエリ速度が遅く、テーブルの使用に影響を及ぼします。

2. テーブル内のデータはセグメント化されています

3. データの操作には、すべてのデータではなく、データの一部のみが関与することがよくあります

CREATE TABLE sales (

    id INT AUTO_INCREMENT,

    amount DOUBLE NOT NULL,

    order_day DATETIME NOT NULL,

    PRIMARY KEY(id, order_day)

) ENGINE=Innodb

PARTITION BY RANGE(YEAR(order_day)) (

    PARTITION p_2010 VALUES LESS THAN (2010),

    PARTITION p_2011 VALUES LESS THAN (2011),

    PARTITION p_2012 VALUES LESS THAN (2012),

PARTITION p_catchall VALUES LESS THAN MAXVALUE);

サブの適用性-tables シナリオ

1. テーブルのクエリ速度が非常に遅くなり、テーブルの使用に影響が出ています。

2. 頻繁に挿入したり、共同でクエリを実行したりすると速度が遅くなります。

サブテーブルの実装にはビジネス実装と移行を組み合わせる必要があり、これは比較的複雑です。

サブテーブルとサブデータベース

サブテーブルは、単一テーブル内の過剰なデータ量によって引き起こされるクエリ効率の低下の問題を解決できますが、改善することはできません。データベースの同時実行性、処理機能により質的な向上がもたらされます。高度な同時読み取りおよび書き込みアクセスに直面して、データベース マスター サーバーが書き込み操作の負荷に耐えられない場合、スレーブ サーバーをどのように拡張しても意味がありません。そこで考え方を変えてデータベースを分割し、データベース書き込み能力を向上させる必要があります、これがいわゆるサブデータベースです。

テーブル シャーディング戦略と同様に、シャーディングではキーワード モジュロを使用してデータ アクセスをルーティングできます。

以上がmysqlシャーディングパーティションデータベースパーティションテーブルの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
MySQLは、他のRDBMSと比較してどのように同時性を処理しますか?MySQLは、他のRDBMSと比較してどのように同時性を処理しますか?Apr 29, 2025 am 12:44 AM

mysqlhandlesconcurrencyusing amixofrow-levelandtable-levellocking、主にthroughnodb'srow-levellocking.comparedtootherrdbms、mysqlのsapproachiseformanyusecasesecasesbutmayfaceChallengeswithdeadlockdlacklikeRisikErisikErikErikErikErikErikErikErikErikErikErikErikErikErikErikeを使用してください

MySQLは、他のリレーショナルデータベースと比較してトランザクションをどのように処理しますか?MySQLは、他のリレーショナルデータベースと比較してトランザクションをどのように処理しますか?Apr 29, 2025 am 12:37 AM

mysqlhandlestransactionsefectivectivelivationtivelivational supportingingacidpropertiessimilArtopostgreslesclandoracle.1)mysqluseSesrepeatable-readededededededededededefaultisolation level

MySQLで利用可能なデータ型は何ですか?MySQLで利用可能なデータ型は何ですか?Apr 29, 2025 am 12:28 AM

MySQLデータ型は、数値、日付と時刻、文字列、バイナリ、空間型に分割されます。正しいタイプを選択すると、データベースのパフォーマンスとデータストレージを最適化できます。

MySQLで効率的なSQLクエリを作成するためのベストプラクティスは何ですか?MySQLで効率的なSQLクエリを作成するためのベストプラクティスは何ですか?Apr 29, 2025 am 12:24 AM

ベストプラクティスには以下が含まれます。1)データ構造とMySQL処理方法の理解、2)適切なインデックス作成、3)SELECT*、4)適切な結合タイプの使用、5)サブQueriesを使用して、5)慎重に使用します。これらのプラクティスは、MySQLクエリを高速であるだけでなく、保守性、スケーラビリティ、リソース効率もすることができます。

MySQLはPostgreSQLとどのように違いますか?MySQLはPostgreSQLとどのように違いますか?Apr 29, 2025 am 12:23 AM

mysqlisbetterforspeedandsimplicity、適切なforwebapplications; postgresqlexcelsincomplexdatascenararios withobustfeatures.mysqlisidealforquickprojectsandread-havytasks、whilepostgressqlessqlispreredforforivationsRedictrictiontrictdateinitegriTinitegriTiontegriTioniitaintegrategrisioniationegrisioniaty

MySQLはデータレプリケーションをどのように処理しますか?MySQLはデータレプリケーションをどのように処理しますか?Apr 28, 2025 am 12:25 AM

MySQLは、非同期、半同期、およびグループ複製の3つのモードを介してデータの複製を処理します。 1)非同期の複製パフォーマンスは高くなりますが、データが失われる可能性があります。 2)半同期複製により、データセキュリティが向上しますが、遅延が増加します。 3)グループレプリケーションは、高可用性要件に適したマルチマスターレプリケーションとフェールオーバーをサポートします。

説明ステートメントを使用してクエリパフォーマンスを分析するにはどうすればよいですか?説明ステートメントを使用してクエリパフォーマンスを分析するにはどうすればよいですか?Apr 28, 2025 am 12:24 AM

説明ステートメントは、SQLクエリのパフォーマンスを分析および改善するために使用できます。 1.説明ステートメントを実行して、クエリプランを表示します。 2。出力結果を分析し、アクセスの種類、インデックスの使用量に注意し、順序を結合します。 3.分析結果に基づいてインデックスを作成または調整し、結合操作を最適化し、フルテーブルスキャンを回避してクエリ効率を向上させます。

MySQLデータベースをバックアップして復元するにはどうすればよいですか?MySQLデータベースをバックアップして復元するにはどうすればよいですか?Apr 28, 2025 am 12:23 AM

論理バックアップにMySQLDUMPとホットバックアップにMySQLenterPriseBackupを使用することは、MySQLデータベースをバックアップする効果的な方法です。 1. mysqldumpを使用してデータベースをバックアップします:mysqldump-uroot-pmydatabase> mydatabase_backup.sql。 2。ホットバックアップにmysqlenterprisebackupを使用:mysqlbackup - user = root-password = password - backup-dir =/path/to/backupbackup。回復するときは、対応する寿命を使用します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

Video Face Swap

Video Face Swap

完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

ホットツール

Dreamweaver Mac版

Dreamweaver Mac版

ビジュアル Web 開発ツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール