目次
MySQLとは
- オープンソースで提供されているリレーショナルデータベース管理システム(RDBMS)
- RDBMSは、データをテーブルとして表現し、それらのテーブル間の関連性を活用してデータを効率的に保存・管理するためのソフトウェア
- MySQLは、多くのアプリやウェブサイトで使用され、データの永続化やアクセスのために広く利用されている
初歩的な知識
データベースとテーブル
- MySQLでは、データを論理的にグループ化した「データベース」内に複数「テーブル」を作成しデータを格納する
- テーブルは行と列から構成され、各行はレコードと呼ばれ、各列はフィールドと呼ばれる
SQL(Structured Query Language)
- SQLは、MySQLを含む多くのRDBMSで使用される標準的なデータベースクエリ言語
- データベースに対してデータの検索、追加、更新、削除などの操作を行うことができる
主キーと外部キーコンセプト
- 主キーは、テーブル内のレコードを一意に識別するためのカラム
- 主キーを設定することで、データの一貫性を保ちつつ、効率的な検索が可能となる
- 外部キーは、異なるテーブル間の関連性を定義するための仕組みであり、他のテーブルの主キーを参照するカラムとして使用される
インデックス
- インデックスは、データベース内のテーブルの特定のカラムに対して効率的な検索を可能にするためのデータ構造
- インデックスを使用することで、大量のデータでも高速な検索が行えるようになるが、同時にデータの追加や更新に対するオーバーヘッドも考慮する必要がある
-- usesテーブルの生成
CREATE TABLE users (
id INT PRIMARY KEY,
username VARCHAR(50),
email VARCHAR(100)
);
-- INDEXの追加
CREATE INDEX idx_username ON users (username);
CREATE INDEX idx_email ON users (email);
オーバーヘッド
- オーバーヘッドとは、インデックスに伴う追加のコストや影響のことを指す
- 検索の高速化に有効だが、データベースのパフォーマンスとストレージ使用量のバランスを保つ必要がある
ストレージの増加 | インデックスは追加のストレージスペースを必要とする、インデックスはデータのコピーではなく、データの一部を保持しており、これによりストレージ使用量が増加する |
データの挿入、更新、削除の遅延 | インデックスを持つテーブルにデータを挿入、更新、削除する際に、インデックスの更新も行われる、これによりデータ操作の速度がわずかに遅くなる可能性がある |
メモリ使用量 | インデックスはデータベースの一部をメモリ内に保持することで高速な検索を提供 大規模なインデックスを持つ場合、メモリ使用量も増加することがある |
適切なインデックスの選択 | 過剰なインデックスを作成すると、ストレージ使用量やデータ操作の遅延が増加する可能性がある、適切なカラムに対してインデックスを作成することが重要 |
具体的な使用例
MySQLサーバーにログイン
mysql -u root -p
dump
dumpとは
- バックアップのこと、dump(バックアップ)データを用意すること
dumpファイルの作成
mysqldump -u ユーザー名 -p データベース名 テーブル名(複数可) > dumpファイル名
- dump処理はあくまでdumpデータを生成するだけでDB削除されない
- 実際にDBを複製・削除したい場合はその作業が別途必要になる
dumpファイルのリストア
以下コマンドでdumpファイルを元に戻せる
mysql -u ユーザー名 -p データベース名 < dumpファイル名
DB:schemaについて
information_schema
- MySQL サーバーに関する情報が保存されているデータベース
- 参照可能、更新及び削除不可
performance_schema
- MySQLで実行されるトランザクションやクエリなどの実行時の様々な情報を取得してくれる機能
レプリケーション
- すでに存在しているデータを他のデータベースサーバに複製しておくこと
- プライマリー/セカンダリー、もしくは、プライマリー/レプリカのように表現する
カラムのデータタイプ:unsigned
- データタイプがind(10) unsignedの場合
- データ型がintで10文字の制限があり、0と正数の値しか保持できなくなる
参考コンテンツ
Web
丁寧にまとめてくださっていてわかりやすかったです。ありがとうございます!
https://www.sejuku.net/blog/82770
MySQL int(10) の意味するところ - Garbage in, gospel out
MySQLにおいてint(10)は整数データタイプの表示幅を10桁に指定するという意味になります。 create文例: CREATE TABLE `test` ( `id` int(10) unsigned NOT NULL DEFAULT '0...
コメント