MySQL は、最も一般的に使用されているリレーショナル データベース管理システムの 1 つで、大量のデータを保存および管理するために使用されます。実際のアプリケーションでは、データの更新と同期が頻繁に行われるため、データの更新と同期の効率が重要な問題となっています。この記事では、MySQL を介してデータの増分更新と同期を実装する方法を紹介し、コード例を示します。
1. データ増分更新
データ増分更新とは、変更されたデータ項目のみを更新することを指し、すべてのデータが更新されます。完全には更新されていません。これにより、データ送信と処理のオーバーヘッドが削減され、データ更新の効率が向上します。
(1) タイムスタンプまたはバージョン番号を使用
データテーブルに更新時刻を示すフィールドを追加します。データが更新されると、このフィールドを現在時刻に更新します。インクリメンタル更新では、現在のタイムスタンプとターゲットのタイムスタンプの差分を比較し、差分データを更新するだけで済みます。
サンプル コードは次のとおりです:
-- 添加时间戳字段 ALTER TABLE table_name ADD COLUMN update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP; -- 增量更新 SELECT * FROM table_name WHERE update_time > '目标时间戳';
(2) レコード変更ログを使用する
データ テーブルに変更操作を記録するためのログ テーブルを追加します。データが更新され、変更操作がログ テーブルに書き込まれます。増分更新中は、ログ テーブル内の変更操作を読み取り、それに応じてターゲット データを更新するだけで済みます。
サンプル コードは次のとおりです:
-- 创建日志表 CREATE TABLE log_table ( id INT AUTO_INCREMENT PRIMARY KEY, table_name VARCHAR(100), record_id INT, operation VARCHAR(10), update_time TIMESTAMP DEFAULT CURRENT_TIMESTAMP ); -- 添加记录变更操作 INSERT INTO log_table (table_name, record_id, operation) VALUES ('table_name', record_id, 'update'); -- 增量更新 SELECT * FROM table_name WHERE id IN (SELECT record_id FROM log_table WHERE table_name = 'table_name' AND operation = 'update');
2. データ同期
データ同期とは、データベースの同期 データベースから別のデータベースにデータをコピーするプロセス。一般的なアプリケーション シナリオには、マスター/スレーブ レプリケーション、マルチマスター レプリケーションなどが含まれます。
(1) マスター/スレーブ レプリケーション
マスター/スレーブ レプリケーションとは、1 つのデータベースをマスター データベースとして使用し、データの書き込みを担当し、データを 1 つ以上のスレーブ データベースにコピーします。スレーブ データベースはデータの読み取りのみを担当し、書き込み操作は実行しません。マスター/スレーブのレプリケーションは、MySQL のレプリケーション機能によって実現できます。
サンプル コードは次のとおりです。
マスター データベースで次のコマンドを実行します。
-- 开启二进制日志 SET GLOBAL log_bin = ON; -- 创建复制用户 CREATE USER 'repl' IDENTIFIED BY 'password'; -- 授予复制权限 GRANT REPLICATION SLAVE ON *.* TO 'repl'; -- 查看当前主数据库的状态 SHOW MASTER STATUS;
スレーブ データベースで次のコマンドを実行します。
-- 设置从数据库的复制参数 CHANGE MASTER TO MASTER_HOST = '主数据库的IP地址', MASTER_USER = 'repl', MASTER_PASSWORD = 'password', MASTER_LOG_FILE = '主数据库的二进制日志文件名', MASTER_LOG_POS = 主数据库的二进制日志位置; -- 开始复制 START SLAVE;
(2) マスター レプリケーションの詳細
マルチマスター レプリケーションとは、複数のデータベースを同時にマスター データベースとして使用し、相互にデータをレプリケートすることを指します。マルチマスター レプリケーションは、MySQL のグループ レプリケーション機能を通じて実現できます。
サンプル コードは次のとおりです。
各マスター データベースで次のコマンドを実行します。
-- 开启组复制 SET GLOBAL group_replication_bootstrap_group = ON; -- 创建组复制用户 CREATE USER 'repl' IDENTIFIED BY 'password'; -- 授予组复制权限 GRANT REPLICATION SLAVE ON *.* TO 'repl'; -- 查看当前主数据库的状态 SHOW MASTER STATUS; -- 结束组复制 SET GLOBAL group_replication_bootstrap_group = OFF;
各スレーブ データベースで次のコマンドを実行します。
-- 设置从数据库的复制参数 SET GLOBAL group_replication_group_seeds = '主数据库1的IP地址:端口,主数据库2的IP地址:端口,...'; -- 开始复制 START GROUP_REPLICATION;
上記は、MySQL でデータの増分更新と同期を実現する方法です。増分更新により、不必要なデータの対話と処理を回避でき、データの同期により、複数のデータベース間でデータをコピーして共有できます。実際のアプリケーションでは、特定のニーズとシナリオに応じて適切な方法が選択され、データの増分更新と同期を実現して、データベースのパフォーマンスと信頼性を向上させます。
以上がMySQL でデータの増分更新と同期を実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。