インターネット アプリケーションの継続的な開発に伴い、データ量も爆発的な増加傾向を示しています。大量のデータを保存するデータベースの場合、高同時実行性、高可用性、高パフォーマンスなどの機能が必要なだけでなく、データ ガバナンス、データ分離、データ分類などのデータ セキュリティ要件を満たす必要もあります。これに関連して、データベース パーティショニングの概念が徐々に広く注目を集めるようになり、エンタープライズ レベルのアプリケーションやインターネット プロジェクトで広く使用されるようになりました。
この記事では、PHP でデータベース パーティショニングを実装する方法を紹介します。簡単にまとめると、主に、MySQL パーティショニングの概要、MySQL パーティショニングの種類、MySQL パーティショニング テーブルの作成と管理、およびPHP で MySQL パーティショニング テーブルを操作する方法。
1. MySQL パーティショニングの概要
MySQL パーティショニングは、物理ファイル システム内のデータを異なるディスクまたはディスク グループに分散する技術的手段です。パーティション化により、データベースのパフォーマンスが向上し、スケーラビリティが向上し、データのストレージとクエリを制御することもできます。 MySQL 5.1 がリリースされた後、MySQL にはパーティションのサポートが追加されました。 MySQL パーティションの種類を紹介します。
2. MySQL パーティションの種類
MySQL は、RANGE パーティション、HASH パーティション、KEY パーティション、LIST パーティション、LINEAR HASH パーティションの 5 つのタイプに分類されます。
1. RANGE パーティション
連続範囲に応じたパーティション、例: 年齢範囲 (
2. HASH パーティション
ユーザーが指定したカラムに基づいてハッシュ値を計算し、そのハッシュ値に応じて異なるパーティションに分散します。一様分布に適したデータです。
3. KEY パーティション
HASH パーティションと同様に、KEY パーティションはキーの hashCode 値を計算することによってテーブルを分割しますが、選択されたキーの値は非ハッシュ アルゴリズムによって生成されます。 、ユーザー ID などは、パーティション操作が主キーと関係がない場合に使用されます。
4. LIST パーティショニング
パーティショニングは特定の列の値に基づいており、RANGE と似ていますが、LIST パーティショニングが不連続である点が異なります。
5. LINEAR HASH パーティション
HASH パーティションをベースにさらに最適化されたパーティションで、データの偏りを軽減します。より適切で優れています。
3. MySQL パーティション テーブルの作成と管理
テーブルを作成するとき、テーブルをパーティション テーブルとして指定します。PARTITION BY RANGE、
PARTITION BY HASH、PARTITION BY を使用できます。 KEY、PARTITION BY.LINEAR HASH、
PARTITION BY LIST、およびその他のステートメントはパーティション テーブルを作成します。次の操作では、例として age パーティション テーブルを使用します:
1. パーティション テーブルを作成します
CREATE TABLE person (
name VARCHAR(50) PRIMARY KEY,
age TINYINT) UNSIGNED,
性別 VARCHAR(1)
) 範囲 (年齢) によるパーティション (
パーティション p0 の値が (10) 未満,
パーティション p1 の値が (18) 未満,
パーティション p2 VALUES LESS THAN (25),
PARTITION p3 VALUES LESS THAN MAXVALUE
);
上記の SQL ステートメントは、年齢に基づいて 4 つのパーティションに分割された人事情報のパーティション テーブルを作成します。
2. パーティション化されたテーブルをクエリする
SHOW PARTITIONS を使用して、テーブルのパーティション化を表示できます。
SHOW PARTITIONS person;
クエリ結果は次のとおりです:
Partition p0 VALUES LESS THAN 10
Partition p1 VALUES LESS THAN 18
Partition p2 VALUES 25 未満
Partition p3 VALUES LESS THAN MAXVALUE
3. パーティション テーブルにデータを追加します
INSERT INTO person VALUES ('Tom', 9, 'M');
INSERT INTO person VALUES ('Lucy', 15, 'W');
INSERT INTO person VALUES ('Lily', 23, 'W');
INSERT INTO person VALUES ('Mark', 28, 'M') ;
INSERT INTO person VALUES ('Jack', 35, 'M');
上記の SQL ステートメントは、それぞれが異なるパーティションに属する 5 つのデータをパーティション テーブルに追加します。クエリ操作は、SELECT * FROM person WHERE age<10 または SELECT * FROM person WHERE age>25 などのステートメントを通じて実行できます。
4. PHP で MySQL パーティション テーブルを操作する方法
PHP コードでは、データベース操作が必要な場合、MySQLi 拡張機能または PDO 拡張機能を介して MySQL データベースに接続し、SQL ステートメントを使用できます。追加、削除、変更、確認などの操作を実行します。
PDO 拡張子を例にとると、接続パーティション表現は次のとおりです。
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'パスワード') ;
SELECT 操作を実行するコード例は次のとおりです。
$stmt = $db->prepare('SELECT 名前,年齢,性別 FROM person WHERE age$ stmt->execute();
$rows = $stmt->fetchAll();
INSERT 操作を実行するコード例は次のとおりです。
$stmt = $db-> prepare('INSERT INTO person VALUES (?, ?, ?)');$stmt->bindParam(1, $name);
$stmt- >bindParam(2, $age);
$stmt->bindParam(3, $gender);
$name = 'ジェリー';
$age = 7;
$gender = 'M';
$stmt-> ;execute();
以上がPHP でデータベースのパーティショニングを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。