MySQLトランザクション処理
- トランザクションは、SQLステートメントのグループを同じバッチに入れて実行することです
- SQLステートメントが失敗した場合、バッチ内のすべてのSQLがキャンセルされます
トランザクション特性
- 原子性
- 一貫性
- 隔離
- 耐久性
MySQLトランザクション実現方法
SET AUTOCOMMIT
- SETステートメントを使用して自動送信モードを変更する
SET AUTOCOMMIT = 0; # 关闭自动提交模式 SET AUTOCOMMIT = 1; # 开启自动提交模式
- デフォルトはMySQLでの自動送信です
- トランザクションを使用するときは、最初に自動コミットをオフにします
注意
开启事务
SHOW VARIABLES LIKE 'event_scheduler';
设置数据库支持事务
SET GLOBAL event_scheduler=ON;
MySQLトランザクションの実装方法
トランザクションを開始
トランザクションを開始し、トランザクションの開始点をマークします
コミット
トランザクションをデータベースに送信する
ロールバック
トランザクションをロールバックし、データをトランザクションの初期状態に戻します
SET AUTOCOMMIT = 1;
MySQLデータベースの自動送信を有効にする
MySQLトランザクション処理ステップ
データベースインデックス
効果
- クエリ速度を改善してデータの一意性を確保する
- テーブルとテーブル間の接続を高速化して、テーブルとテーブル間の参照整合性を実現できます。
- データの取得にグループ化と並べ替えの句を使用すると、グループ化と並べ替えの時間を大幅に短縮できます。
- 検索最適化のための全文検索フィールド
分類
- 主キーインデックス(PRIMARY KEY)
- 一意のインデックス(UNIQUE)
- 通常インデックス(INDEX)
- 全文索引(FULLTEXT
主キーインデックス
特定の属性または属性の組み合わせにより、レコードを一意に識別できます
など:学生テーブル(学生番号、名前、クラス、性別など)、学生番号は一意に識別され、主キーとして使用できます。
特徴
- 最も一般的なインデックスタイプ
- データレコードの一意性を確保する
- データベース内の特定のデータレコードの場所を決定する
一意のインデックス(UNIQUE)
効果
同じテーブルのデータ列の値の重複を避ける
主キーインデックスとの違い
1つの主キーインデックス
と複数の一意のインデックスのみが存在できます。
通常インデックス(INDEX)
効果:特定のデータをすばやく見つける
注意
インデックスキーワードとキーキーワードの両方を通常のインデックスに設定できます。これら
は検索条件フィールドに追加する必要があります。
データの挿入、削除、変更操作に影響を与える通常のインデックスをあまり多く追加することはお勧めできません。
全文索引(FULLTEXT)
効果:特定のデータをすばやく見つける
注意
MyISAMタイプのデータテーブルに
のみ使用できます。CHAR、VARCHAR、TEXTデータ列タイプにのみ使用できます。
大きなデータセットに適しています。
インデックスの管理インデックスの
作成
- テーブル作成時に追加
- テーブル作成後に追加
ALERT TABLE 表名 ADD 索引类型(数据列名)
インデックスを削除
DROP INDEX 索引名 ON 表名
ALTER TABLE 表名 DROP INDEX 索引名
ALTER TABLE 表名 DROP PRIMARY KEY
インデックスを表示
SHOW INDEX(或KEYS) FROM 表名
インデックスのガイドライン
- インデックスはできるだけ多くありません
- 頻繁に変化するデータのインデックスを作成しない
- データ量が少ないテーブルにはインデックスを追加しないことをお勧めします
- インデックスは通常、検索条件フィールドに追加する必要があります
MySQLバックアップ
データベースのバックアップの必要性
重要なデータが失われないようにする
データ転送
MySQLデータベースのバックアップ方法
mysqldumpバックアップツール
SQLyogなどのデータベース管理ツールは、
データベースファイルと関連する構成ファイルを直接コピーします。
mysqldumpデータベースのバックアップ
効果
データベースのダンプ、
バックアップ用のデータベースの収集、
別のSQLサーバーへのデータの転送(必ずしもMySQLサービスではない)
mysqldump -h 主机名 –u 用户名 –p [options] 数据库名
[ table1 table2 table3 ] > path/filename.sql
# 备份myschool数据库如:
> mysqldump -u root -p myschool > d:/myschool.sql
EnterPassword: *****
mysqldump共通オプション
MySQLデータベースのリカバリ
方法1
SOURCE構文を使用
SOURCE /path/db_name.sql;
/ path /は絶対パスであり、mysqlを実行しているユーザーが
MySQLコマンドラインでSOURCE Execute を読み取る権限を持っているファイルである必要があります
方法2
はMySQLクライアントを使用する
mysql –u root –p dbname < /path/db_name.sql;
SQLステートメントを使用してデータをエクスポートおよびインポートする
書き出す
SELECT * INTO OUTFILE 'file_name'
FROM tbl_name
インポート
LOAD DATA INFILE 'file_name '
INTO TABLE tbl_name[FIELDS]