リレーション AとBのテーブルがあった時に、AのレコードがBのレコードにいくつかリレーション(関係)を持つかを考える。 1対1の関係 将来も1対1のリレーションであるなら、そもそもテーブルを分割する必要がない 1対多の関係 通常のリレーション playerテーブルのサトシくんはポケモンをたくさん所有しています。 更 …
カテゴリー: MySQL
MySQLのデータディレクトリを変更する
ディレクトリの作成 # mkdir -p /home/mysql # chmod 755 /home/mysql # chown mysql:mysql -R /home/mysql 新しいディレクトリにデータを複製し、元を削除 # cp -rfp /var/lib/mysql/* /home/mysql/ # rm -rf /var/lib/mysq …
MySQLTuner CentOS7
MySQLTunerインストール # wget -O /usr/local/src/MySQLTuner.zip https://github.com/rackerhacker/MySQLTuner-perl/archive/master.zip # unzip /usr/local/src/MySQLTuner.zip -d /usr/local/src/ # rm -f /usr …
MySQL 外部キー制約のデッドロック
外部キー制約に伴うロックの小話 from ichirin2501 外部キー(FOREIGN KEY)制約を利用している場合、 子テーブルに追加、更新や削除を行う時は、必ず親テーブルの対象のidに対して排他ロックを行ってから、更新や削除、追加を行う。 親テーブルの該当idに対して排他ロックを取る 子テーブルの該当行に対して追加、更新、削除等を行う これならロックは起こらない。 &n …
RDS MySQL, PostgreSQL スロークエリ関連ログの出力
パラメータグループを変更させてスロークエリを有効化させる MySQL slow_query_log 許可された値:1 or 0 スロークエリログを有効化する場合は1 general_log 許可された値:1 or 0 すべてのログを出力する場合は1 log_queries_not_using_indexes 許可された値:1 or 0 インデックスを利用し …
MySQLレプリケーション再接続設定と再接続時系列
会社の記事に投稿したもの。基本的に下記の値で安定するけれど、きちんと時系列を把握しておいた方が良い。 https://sys-guard.com/post-12263/ スレーブからマスターへ接続するSQL文 MySQLのレプリケーションというと下記のようにスレーブからマスターに接続をかけます。 mysql> CHANGE MASTER TO MASTER_HOS …
SQLアンチパターン本購入。
SQLアンチパターン ID リクワイアド(とりあえずID) ⇒他のテーブルで共通名でいいから分かりやすい名前を ジェイウォーク ⇒交差テーブル キーレスエントリ(外部キー嫌い ※アプリ内で整合性を取ろうとする、アプリ以外からゴミデータが入る場合がある) ⇒外部キー制約を宣言する とりあえず削除フラグ ⇒状態を持たせる NEWや、有効、中止、キャンセル、廃止予定など ⇒全てのテーブルに削除フラグはお …
MySQLロールフォワード
今回はMySQLのロールフォワードの紹介記事です。 課金や顧客の財産がデータベースに書き込まれていくサービスを運用する場合、ロールフォワードは必須の技術になります。ロールフォワードする場面を想像しただけで、おなかが痛くなりますね・・・・・・^^; ロールフォワード データベースに障害が発生したときに、記録してあるチェックポイントのデータを再現した上で、ログ …
MySQLパーティショニング
MySQLで運用していると100万レコードほどになってくるとレスポンスが悪くなります。WEBサービスのチャットや履歴といったログデータを、ユーザ側で『最初から最後まで見れて当たり前』な設計をすると、ユーザが増加してチャットデータが爆発的に増えた場合にデータベースが膨らみます。そのまま全部保存でいくといつかは会話の時系列でサーバをわけることになります。 そもそも1年前の会 …
メモ MySQLデッドロック関連・mixiを支える技術【技評】
■MySQLデッドロック関連 DBの初期設計がむちゃくちゃなシステムを後から修正をするのは難しい。トランザクションする場合のテーブルロックの順番を意識して開発していないとどんどん増えるよ! ○移行の注意 ストレージエンジンをMyISAMからInnoDBへ切り替える際の注意 http://gihyo.jp/dev/clip/01/groonga/0006?page=3 ○ …
MySQLのトランザクションとか分離レベルメモ
@see https://www.websec-room.com/2015/11/17/2356 わかりやすくまとまっています(ㆁᴗㆁ✿) <?php require_once(“function.php”); try{ $dbh = new PDO(DSN, USERNAME, PASSWORD); // 静的プレースホルダを指定 $dbh->setAtt …
MySQLの正規系とかデータベース設計の基本がわかるサイト
一週間で身につくMySQL http://web.sevendays-study.com/mysql/index.html DB設計(第2,第3正規形) http://www.simpline.co.jp/tech/?p=169 第3正規系、キー制約、データベース設計とか。 基本項目でクエリの種類、発展項目でデータベース設計。 わかりやすいですね。 新人さん向けの資 …