、
システムパフォーマンスのボトルネックを避けるために、データベースのデータ量はある程度に達します。データは、パーティショニング、シャーディング、データベース、テーブルを使用して処理する必要があります。
2. シャーディング (シャーディングと同様)
シャーディングは、データベースを複数の物理ノードにスケールアウトする効果的な方法であり、その主な目的は、シングルノード データベース サーバーの I/O 容量制限を解決し、データベースのスケーラビリティの問題を解決します。シャードという言葉は「断片」を意味します。データベースを大きなガラス片として扱い、ガラスが割れた場合、その小さな破片のそれぞれをデータベースの断片 (データベース シャード) と呼びます。データベース全体をいくつかの部分に分割するプロセスはシャーディングと呼ばれます。これはシャーディングと翻訳できます。
正式には、シャーディングは、大規模なデータベースを複数の物理ノードに分散するパーティション化スキームとして単純に定義できます。各パーティションにはスライスと呼ばれるデータベースの特定の部分が含まれており、パーティション分割方法は任意であり、従来の水平パーティションと垂直パーティションに限定されません。シャードには、複数のテーブルまたは複数のデータベース インスタンスの内容を含めることができます。各シャードはデータベース サーバー上に配置されます。データベース サーバーは、1 つ以上のデータ シャードを処理できます。サーバーは、クエリのルーティングと転送のためにシステムに必要であり、実行のためにクエリによってアクセスされるデータを含むシャードまたはシャード コレクション ノードにクエリを転送する役割を担います。
3. スケールアウト/スケールアップと垂直分割/水平分割
Mysql の拡張ソリューションにはスケールアウトとスケールアップが含まれます。
スケールアウト(水平拡張)とは、アプリケーションを水平方向に拡張できることを意味します。一般に、データセンター アプリケーションの場合、スケール アウトとは、さらに多くのマシンが追加された場合でも、アプリケーションがこれらのマシンのリソースを有効に活用して、自身の効率を向上させ、優れたスケーラビリティを実現できることを意味します。
スケールアップ (垂直方向の拡張) は、アプリケーションが垂直方向に拡張できることを意味します。一般に、単一マシンの場合、スケールアップは価値があり、コンピューティング ノード (マシン) が CPU コアやストレージ デバイスを追加し、より大きなメモリを使用すると、アプリケーションはこれらのリソースを最大限に活用して効率を向上させることができます。優れた拡張性。
MySql のシャーディング戦略には、垂直シャーディングと水平シャーディングが含まれます。
垂直 (垂直) 分割: テーブル間の IO 競合を解決するための機能モジュールによる分割を指します。例えば、注文データベース、商品データベース、ユーザーデータベース… このように、複数のデータベースのテーブル構造は異なります。
水平 (水平) 分割: 同じテーブルのデータをブロックに保存し、それを別のデータベースに保存して、単一テーブルのデータ量増加によるプレッシャーを解決します。これらのデータベースのテーブル構造はまったく同じです。
テーブル構造の設計は縦に分割されています。一般的なシナリオには、
#大きなフィールドの垂直セグメンテーションが含まれます。基本テーブルのアクセス パフォーマンスを向上させるために、別のテーブルに大きなフィールドを個別に構築します。原則として、パフォーマンスが重要なアプリケーションでは、データベースの大きなフィールドは避けるべきです。
垂直セグメンテーションによる使い方に合わせてたとえば、企業のマテリアル属性は、基本属性、販売属性、購買属性、製造属性、財務会計属性などに従って垂直にセグメント化できます。
アクセス頻度に従って垂直にセグメント化されます。たとえば、電子商取引や Web 2.0 システムでユーザー属性の設定が多数ある場合、基本的な頻繁に使用される属性とあまり使用されない属性を垂直に分離できます。デザインは横に分かれています。一般的なシナリオには、次のようなものがあります。
たとえば、オンライン電子商取引 Web サイトでは、注文テーブル データの量が多すぎて、年レベルと月レベルで分割されています。
Web 2.0 Web サイト上の登録ユーザーとオンライン アクティブ ユーザーが多すぎる場合は、ユーザー ID の範囲に従って、関連するユーザーとそのユーザーに密接に関連するテーブルを水平方向にセグメント化します。フォーラムのトップの投稿, ページングの問題のため、各ページにピン留めされた投稿を表示する必要があります。この場合、ピン留めされた投稿を取得するときにすべての投稿のテーブルから読み取られるのを避けるために、ピン留めされた投稿を水平に分割できます
- 4. テーブルの分割とパーティショニング
テーブルの分割とは、表面的にはテーブルを複数の小さなテーブルに分割することを意味しますが、パーティショニングはテーブルのデータを N 個の倍数に分割することを意味します。エリア、ブロック、これらは同じディスク上に存在することも、異なるディスク上に存在することもできます。
サブテーブルとパーティションの違い
実装の観点からmysqlのサブテーブルは実際のサブテーブルです-table. テーブルが多くのテーブルに分割された後、それぞれの小さなテーブルは完全なテーブルとなり、3 つのファイル (MyISAM エンジン: .MYD データ ファイル、.MYI インデックス ファイル、および .frm テーブル構造ファイル) に対応します。 - 数据处理上
分表后数据都是存放在分表里,总表只是一个外壳,存取数据发生在一个一个的分表里面。分区则不存在分表的概念,分区只不过把存放数据的文件分成了许多小块,分区后的表还是一张表,数据处理还是由自己来完成。
- 提高性能上
分表后,单表的并发能力提高了,磁盘I/O性能也提高了。分区突破了磁盘I/O瓶颈,想提高磁盘的读写能力,来增加mysql性能。
在这一点上,分区和分表的测重点不同,分表重点是存取数据时,如何提高mysql并发能力上;而分区呢,如何突破磁盘的读写能力,从而达到提高mysql性能的目的。
- 实现的难易度上
分表的方法有很多,用merge来分表,是最简单的一种方式。这种方式和分区难易度差不多,并且对程序代码来说可以做到透明的。如果是用其他分表方式就比分区麻烦了。分区实现是比较简单的,建立分区表,跟建平常的表没什么区别,并且对代码端来说是透明的。
分区的适用场景
一张表的查询速度已经慢到影响使用的时候。
表中的数据是分段的
对数据的操作往往只涉及一部分数据,而不是所有的数据
CREATE TABLE sales (
id INT AUTO_INCREMENT,
amount DOUBLE NOT NULL,
order_day DATETIME NOT NULL,
PRIMARY KEY(id, order_day)) ENGINE=InnodbPARTITION 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);
分表的适用场景
一张表的查询速度已经慢到影响使用的时候。
当频繁插入或者联合查询时,速度变慢。
分表的实现需要业务结合实现和迁移,较为复杂。
五、分表与分库
分表能够解决单表数据量过大带来的查询效率下降的问题,但是,却无法给数据库的并发处理能力带来质的提升。面对高并发的读写访问,当数据库master服务器无法承载写操作压力时,不管如何扩展slave服务器,此时都没有意义了。因此,我们必须换一种思路,对数据库进行拆分,从而提高数据库写入能力,这就是所谓的分库。
与分表策略相似,分库可以采用通过一个关键字取模的方式,来对数据访问进行路由,如下图所示

六、分区与分片区别 原文

推荐学习:《mysql视频教程》
一张表的查询速度已经慢到影响使用的时候。
表中的数据是分段的
对数据的操作往往只涉及一部分数据,而不是所有的数据
一张表的查询速度已经慢到影响使用的时候。
当频繁插入或者联合查询时,速度变慢。


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

INNODBは、レドログと非論的なものを使用して、データの一貫性と信頼性を確保しています。 1.レドログは、クラッシュの回復とトランザクションの持続性を確保するために、データページの変更を記録します。 2.Undologsは、元のデータ値を記録し、トランザクションロールバックとMVCCをサポートします。

説明コマンドのキーメトリックには、タイプ、キー、行、および追加が含まれます。 1)タイプは、クエリのアクセスタイプを反映しています。値が高いほど、constなどの効率が高くなります。 2)キーは使用されているインデックスを表示し、nullはインデックスがないことを示します。 3)行はスキャンされた行の数を推定し、クエリのパフォーマンスに影響します。 4)追加の情報を最適化する必要があるというFilesortプロンプトを使用するなど、追加情報を提供します。

Temporaryを使用すると、MySQLクエリに一時テーブルを作成する必要があることが示されています。これは、異なる列、またはインデックスされていない列を使用して順番に一般的に見られます。インデックスの発生を回避し、クエリを書き直し、クエリのパフォーマンスを改善できます。具体的には、expliect出力に使用を使用する場合、MySQLがクエリを処理するために一時テーブルを作成する必要があることを意味します。これは通常、次の場合に発生します。1)個別またはグループビーを使用する場合の重複排除またはグループ化。 2)Orderbyに非インデックス列が含まれているときに並べ替えます。 3)複雑なサブクエリを使用するか、操作に参加します。最適化方法には以下が含まれます。1)OrderbyとGroupB

MySQL/INNODBは、4つのトランザクション分離レベルをサポートしています。 1.ReadunCommittedは、知らないデータを読み取ることができます。 2。読み込みは汚い読み取りを回避しますが、繰り返しのない読みが発生する可能性があります。 3. RepeatablerEadはデフォルトレベルであり、汚い読み取りと非回復不可能な読みを避けますが、幻の読み取りが発生する可能性があります。 4. Serializableはすべての並行性の問題を回避しますが、同時性を低下させます。適切な分離レベルを選択するには、データの一貫性とパフォーマンス要件のバランスをとる必要があります。

MySQLは、Webアプリケーションやコンテンツ管理システムに適しており、オープンソース、高性能、使いやすさに人気があります。 1)PostgreSQLと比較して、MySQLは簡単なクエリと高い同時読み取り操作でパフォーマンスが向上します。 2)Oracleと比較して、MySQLは、オープンソースと低コストのため、中小企業の間でより一般的です。 3)Microsoft SQL Serverと比較して、MySQLはクロスプラットフォームアプリケーションにより適しています。 4)MongoDBとは異なり、MySQLは構造化されたデータおよびトランザクション処理により適しています。

MySQLインデックスのカーディナリティは、クエリパフォーマンスに大きな影響を及ぼします。1。高いカーディナリティインデックスは、データ範囲をより効果的に狭め、クエリ効率を向上させることができます。 2。低カーディナリティインデックスは、完全なテーブルスキャンにつながり、クエリのパフォーマンスを削減する可能性があります。 3。ジョイントインデックスでは、クエリを最適化するために、高いカーディナリティシーケンスを前に配置する必要があります。

MySQL学習パスには、基本的な知識、コアの概念、使用例、最適化手法が含まれます。 1)テーブル、行、列、SQLクエリなどの基本概念を理解します。 2)MySQLの定義、作業原則、および利点を学びます。 3)インデックスやストアドプロシージャなどの基本的なCRUD操作と高度な使用法をマスターします。 4)インデックスの合理的な使用や最適化クエリなど、一般的なエラーのデバッグとパフォーマンス最適化の提案に精通しています。これらの手順を通じて、MySQLの使用と最適化を完全に把握できます。

MySQLの実際のアプリケーションには、基本的なデータベース設計と複雑なクエリの最適化が含まれます。 1)基本的な使用法:ユーザー情報の挿入、クエリ、更新、削除など、ユーザーデータの保存と管理に使用されます。 2)高度な使用法:eコマースプラットフォームの注文や在庫管理など、複雑なビジネスロジックを処理します。 3)パフォーマンスの最適化:インデックス、パーティションテーブル、クエリキャッシュを使用して合理的にパフォーマンスを向上させます。


ホットAIツール

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

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

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ドリームウィーバー CS6
ビジュアル Web 開発ツール

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、
