SQLの実行順序おさらい SELECT 列の抽出対象 FROM テーブル名 WHERE 行の絞り込み条件 GROUP BY hoge_colum HAVING 100 > amount Aテーブルの列と行を切り出しイメージをする Bテーブルの列と行を切り出しイメージをする ONで結合条件を指定 WHEREで行を絞りこむ GROUP BYでグループ化 …
カテゴリー: MySQL
MySQL SHOWによる解析とチューニング
MySQLのチューニング調査依頼で時短で終わるように バージョン CentOS7 MySQL5.6 DB, テーブルのDBエンジンの確認 データベースの確認 mysql> show databases; +——————–+ | Database | +——————–+ | information_s …
AWSでのMySQLデータ生存戦略
MySQL on EC2 EFSをマウント mysqldumpのスナップショットを定期で取ってEFSに出力 バイナリログを–result-file=で指定してEFSに出力 合わせて、 Cronを5秒ずつ程度走らせてバイナリログをS3に同期してバックアップ CloudWatchにもログを出力 MySQL on RDS 5分毎にSnapshotが走っている仕 …
Laravel MySQL Note: Data truncated for column ‘created_at’
created_atのデータ型をtimestamp型にすれば解決😹 Amazonおすすめ iPad 9世代 2021年最新作 iPad 9世代出たから買い替え。安いぞ!🐱 初めてならiPad。Kindleを外で見るならiPad mini。ほとんどの人には通常のiPadをおすすめします><
コンシューマでJOIN禁止, 固定長DBまとめ
コンシューマ世界でのJOIN禁止、固定長ルールのまとめ 私 JOIN禁止の世界は知らない(1テーブルに1億以上のレコードを扱ったことがない) 原則として正規化できるものは正規化してJOINを行い、正規化する必要のないものは正規化しないスタンス 1テーブルはどんなに大きくても20カラム限界がセオリー →正規化できるのではないか、テーブルをわける 1テーブルが大きく正規化されずに開発されたサービスの保 …
SQL インデックスが効かない検索
基本戦略 テーブルを正規化する JOIN(INNER JOIN)を有効に活用する 非正規化でテーブルを巨大にしない すべてのテーブルを正規化することは出来ない 出来るテーブルのみ正規化する EXPLAINで計測する、INDEXが有効に動いているか確認する インデックスのデメリット SELECT性能がBtreeインデックスによって向上するが、UPDATEでINDEXが再生 …
MySQL デッドロック対処
MySQLのデッドロック対処 おまけでギャップロック 寄稿しました。 今回はトランザクションでよくありがちなデッドロックのご紹介。 たすきがけのデッドロック よくデッドロックはなんぞや?といった時に提示されるパターンです。 CREATE TABLE a_table( a_id INT UNSIGNED PRIMARY KEY, …
Percona XtraBackup ロールフォワード
Percona XtraBackup mysqldumpリストア時間比較 おまけでロールフォワード 寄稿しました。 どっちを使う? XtraBackup レプリケーションが行われているシステム。 WEBサービス。1秒も止められないようなもの。1秒で利益や損失が発生するサービス。 XtraBackup, mysqldumpの併用しておく。 mysqldump 業務アプリ。深夜や早朝、お …
MySQL 5.6 ファイルディスクリプタ カーネルチューニング CentOS7
MySQL5.6 ファイルディスクリプタチューニング CentOS7 [Warning] Buffered warning: Could not increase number of max_open_files to more than 1024 (request: 10140) [Warning] Buffered warning: Changed limits: max_con …
MySQL5.6.22以下注意 SET GLOBAL sql_log_bin
MySQLのレプリケーション環境を運用していると、バイナリログへの記録を一時的に止めるためにsql_log_bin=0を実行したことがあるだろう。これを「set GLOBAL sql_log_bin=0」と、グローバル変数への変更として実行すると大変なことになる、という指摘。TwitterのMySQLエンジニア、Jeremy Cole氏の提言。 MySQL 5.5.41、5.6. …
SQL 置換 REPLACE
値を置換します。 UPDATE テーブル名 SET カラム名 = REPLACE(カラム名, ‘値old’, ‘値new’); 万単位のレコード置換は本当に気持ちが良いもの。 このクエリ大好き。 使う機会を震えて待ってます(*’∀’人) Amazonおすすめ iPad 9世代 2021年最新作 iPa …
MySQL レプリケーション監視スクリプト
レプリケーション監視スクリプト replication_check.sh #!/bin/sh #PASSWORD=”パスワードを入力” EMAIL=hoge@example.net DOMAIN=crient.com CRIENT=”もげ株式会社” #eval “`mysql -u root -p${PASSWORD} -e ‘show slave status \ …