コンシューマ世界でのJOIN禁止、固定長ルールのまとめ 私 JOIN禁止の世界は知らない(1テーブルに1億以上のレコードを扱ったことがない) 原則として正規化できるものは正規化してJOINを行い、正規化する必要のないもの…
public string[] 優技録 = { "Data Science", "Linux", "MS", "DB", "AWS", "Infrastructure", "C#", "PHP", "Python", "JavaScript"};
コンシューマ世界でのJOIN禁止、固定長ルールのまとめ 私 JOIN禁止の世界は知らない(1テーブルに1億以上のレコードを扱ったことがない) 原則として正規化できるものは正規化してJOINを行い、正規化する必要のないもの…
基本戦略 テーブルを正規化する JOIN(INNER JOIN)を有効に活用する 非正規化でテーブルを巨大にしない すべてのテーブルを正規化することは出来ない 出来るテーブルのみ正規化する EXPLAINで…
環境構築編 購入の価値ありです。 SQL1. SELECT
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 |
postgres=# SELECT * FROM payment; payment_id | customer_id | staff_id | rental_id | amount | payment_date ------------+-------------+----------+-----------+--------+---------------------------- 16050 | 269 | 2 | 7 | 1.99 | 2007-01-24 21:40:19.996577 16051 | 269 | 1 | 98 | 0.99 | 2007-01-25 15:16:50.996577 16052 | 269 | 2 | 678 | 6.99 | 2007-01-28 21:44:14.996577 16053 | 269 | 2 | 703 | 0.99 | 2007-01-29 00:58:02.996577 16054 | 269 | 1 | 750 | 4.99 | 2007-01-29 08:10:06.996577 16055 | 269 | 2 | 1099 | 2.99 | 2007-01-31 12:23:14.996577 16056 | 270 | 1 | 193 | 1.99 | 2007-01-26 05:10:14.996577 16057 | 270 | 1 | 1040 | 4.99 | 2007-01-31 04:03:42.996577 16058 | 271 | 1 | 1096 | 8.99 | 2007-01-31 11:59:15.996577 16059 | 272 | 1 | 33 | 0.99 | 2007-01-25 02:47:17.996577 (略) postgres=# SELECT * FROM customer; customer_id | store_id | first_name | last_name | email | address_id | activebool | create_date | last_update | active -------------+----------+-------------+--------------+------------------------------------------+------------+------------+-------------+---------------------+-------- 1 | 1 | MARY | SMITH | MARY.SMITH@sakilacustomer.org | 5 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 2 | 1 | PATRICIA | JOHNSON | PATRICIA.JOHNSON@sakilacustomer.org | 6 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 3 | 1 | LINDA | WILLIAMS | LINDA.WILLIAMS@sakilacustomer.org | 7 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 4 | 2 | BARBARA | JONES | BARBARA.JONES@sakilacustomer.org | 8 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 5 | 1 | ELIZABETH | BROWN | ELIZABETH.BROWN@sakilacustomer.org | 9 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 6 | 2 | JENNIFER | DAVIS | JENNIFER.DAVIS@sakilacustomer.org | 10 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 7 | 1 | MARIA | MILLER | MARIA.MILLER@sakilacustomer.org | 11 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 8 | 2 | SUSAN | WILSON | SUSAN.WILSON@sakilacustomer.org | 12 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 9 | 2 | MARGARET | MOORE | MARGARET.MOORE@sakilacustomer.org | 13 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 10 | 1 | DOROTHY | TAYLOR | DOROTHY.TAYLOR@sakilacustomer.org | 14 | t | 2006-02-14 | 2006-02-15 09:57:20 | 1 (略) |
SQL2. 条件を指定す…
MySQLのデッドロック対処 おまけでギャップロック 寄稿しました。 今回はトランザクションでよくありがちなデッドロックのご紹介。 たすきがけのデッドロック よくデ…
Percona XtraBackup mysqldumpリストア時間比較 おまけでロールフォワード 寄稿しました。 どっちを使う? XtraBackup レプリケーションが行われているシステム。 WEBサー…
自分用に要約メモ。 詳しい記事は引用先をみてくださいな。 @see なぜ、SQLは重たくなるのか? —『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 ORMが自動生成するS…
MySQL5.6 ファイルディスクリプタチューニング CentOS7 [Warning] Buffered warning: Could not increase number of max_open_fi…
MySQLのレプリケーション環境を運用していると、バイナリログへの記録を一時的に止めるためにsql_log_bin=0を実行したことがあるだろう。これを「set GLOBAL sql_log_bin=0」と…
値を置換します。
1 |
UPDATE テーブル名 SET カラム名 = REPLACE(カラム名, '値old', '値new'); |
万単位のレコード置換は本当に気持ちが良いもの。 このクエリ大好き。 使う機会を震えて待ってます…
レプリケーション監視スクリプト replication_check.sh
1 2 3 4 5 6 7 8 9 10 11 12 13 |
#!/bin/sh #PASSWORD="パスワードを入力" EMAIL=hoge@example.net DOMAIN=crient.com CRIENT="もげ株式会社" #eval "`mysql -u root -p${PASSWORD} -e 'show slave status \G' | sed -ne 's/: \(.*\)/="\1"/p' `" eval "`mysql --defaults-extra-file=/root/.my.cnf -e 'show slave status \G' | sed -ne 's/: \(.*\)/="\1"/p' `" if [ "$?${Slave_IO_Running}${Slave_SQL_Running}" != "0YesYes" ]; then echo "show slave status\G" | mysql --defaults-extra-file=/root/.my.cnf | mail -s "レプリケーションエラー:${DOMAIN}:${CRIENT}:"`hostname` ${EMAIL} exit 1 fi |
[crayon-5c71…
1 2 3 4 |
Munin-notification for net::example.net net :: example.net :: MySQL InnoDB free tablespace UNKNOWNs: Bytes free is unknown. |
1 2 3 4 |
# /etc/my.cnf 自動拡張のサイズ innodb_autoextend_increment = 64 ##InnoDBテーブルスペースファイル 自動拡大テーブルスペースがいっぱいになった時の 自動増分サイズ |
[crayon-5c71d48778d1f65…
ログイン用ファイル作成 ※rootパスワード設定時
1 2 3 4 5 6 7 8 9 10 11 |
# vi /root/.my.cnf [mysqladmin] host = localhost user = root password = DBpassword [client] user = root password = DBpassword host = localhost |
1 2 3 |
# chmod 400 /root/.my.cnf # mysql --defaults-extra-file=/root/.my.cnf |
&nbs…
リレーション AとBのテーブルがあった時に、AのレコードがBのレコードにいくつかリレーション(関係)を持つかを考える。 1対1の関係 将来も1対1のリレーションであるなら、そもそ…
ディレクトリの作成
1 2 3 |
# mkdir -p /home/mysql # chmod 755 /home/mysql # chown mysql:mysql -R /home/mysql |
新しいディレクトリにデータを複製し、元を削除 [crayon-5c71d48779a3919…
MySQLTunerインストール
1 2 3 4 5 |
# 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/local/src/MySQLTuner.zip |
実行
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
# /usr/local/src/MySQLTuner-perl-master/mysqltuner.pl -user root >> MySQLTuner 1.7.9 - Major Hayden <major@mhtx.net> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with '--help' for additional options and output filtering [--] Skipped version check for MySQLTuner script [!!] Attempted to use login credentials, but they were invalid [root@localhost MySQLTuner-perl-master]# /usr/local/src/MySQLTuner-perl-master/mysqltuner.pl >> MySQLTuner 1.7.9 - Major Hayden <major@mhtx.net> >> Bug reports, feature requests, and downloads at http://mysqltuner.com/ >> Run with '--help' for additional options and output filtering [--] Skipped version check for MySQLTuner script Please enter your MySQL administrative login: root Please enter your MySQL administrative password:※パスワード入力 [OK] Currently running supported MySQL version 5.7.22-log [OK] Operating on 64-bit architecture (略) |
&nb…