MySQL

MySQLワークベンチでNullをインポートする方法

[背景] MySQLワークベンチでcsvエクスポートを行うと、NullのカラムはNULLという文字でエクスポートされる。 これを同じくMySQLワークベンチでインポートを行うと、NULLという文字が格納されてしまう。 これを、csvファイルを編集して、\Nと文字列置換しても…

P44 スロークエリを出力する方法

[オプションファイルで設定する方法] slow-query-log = ON slow-query-log-file = /var/log/mysql-slow.log long-query-time = 1 なお、スロークエリかどうかの閾値はデフォルトで10秒である。 システム変数で設定したい場合は、上記ハイフンをアンダースコ…

P44 ログ出力先の変更方法

[オプションファイルで切替する方法] log-output = FILE,TABLE [SETクエリで切替する方法] SET GLOBAL log_output = 'FILE,TABLE';ソフトウェアデザイン 2016年 09 月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2016/08/18メディア: 雑誌この商品を含むブ…

P43 一般クエリログの有効化方法

[ファイルで一般クエリログを有効化] [mysqld] general-log general-log-file = /var/log/mysql.log [SETクエリで一般クエリログを有効化] SET GLOBAL general_log = ON; SET GLOBAL general_log_file = '/var/log/mysql.log'; ソフトウェアデザイン 2016年 …

P43 mysqldがどのファイルを読み込むかの確認方法

mysqld --help --verbose ソフトウェアデザイン 2016年 09 月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2016/08/18メディア: 雑誌この商品を含むブログ (1件) を見る

P34 メモリ使用率

Free buffers×innodb_page_sizeがbuffer poolのサイズとなる。 但し、Free buffersが0になったからといって、すぐにパフォーマンス劣化するとは限らない。 しかし、できる限りbuffer poolが溢れないようにする事が望ましい。[ワンライナー] mysql -u hoge -p…

P33 コネクション数

最大コネクションの確認は、max_connectionsというシステム変数で決定する。 接続中のコネクション数は、Threads_connectedというキーワードで確認できる。 なお、RDS for MySQLやAuroraの場合は、デフォルトではメモリ容量から最大コネクション数が決まる様…

P32 発行されるクエリの数

クエリ数を計測しておくと、既存コードの修正やリリースした際に、どの程度増減したかを観測できる。 繰り返し取得する事で、その差分を算出すれば、区間時間内のクエリ実行数を算出することも可能である。[ワンライナー] mysql -u hoge -ppassword -ppasswo…

P26 mysql CLIの補完機能

SELECTなどのSQLは大文字で書かないと補完機能は働かない。 ソフトウェアデザイン 2016年 02 月号 [雑誌] 出版社/メーカー: 技術評論社 発売日: 2016/01/18 メディア: 雑誌 この商品を含むブログ (1件) を見る

P40 日付/日時型とtimezone

MySQLではDB自体でtimezoneを次の方法で変更可能 SETtime_zone = timezone; MySQLでは、timezoneを設定するとTIMESTAMP型は影響を受けるが、DATETIME型は影響を受けない。 また、0000-00-00 00:00:00という実在しない時間を登録できる。ソフトウェアデザイン…

P40 SQLモード

MySQLでは「||」はOR演算子を指すため、Oracleの様な文字列結合には使えない。 次の設定(SQLモード)を行えば、「||」で文字結合が行える。 SET sql_mode= CONCAT_WS(',', @@sql_mode, 'PIPES_AS_CONCAT') ソフトウェアデザイン 2016年 02 月号 [雑誌]出版社/…

P36 JOINの性能差

JOINのアルゴリズムは一般的に以下の3つが存在する。 Nested Loop Join Sort Merge Join Hash Join MySQLにはNested Loop Joinしかなく、大きなデータのJOINにはとくに弱い。 PostgreSQLは3種類ともサポートしているが、それでも当然限界はある。ソフトウェ…

P20 Diskへのアクセスの仕方の違い

PostgreSQLはいかにHDDにアクセスしないかを追求したデザインとなっている。 そのため、シーケンシャルアクセスを想定しているため、SSDとの相性が悪い。MySQLもHDDを意識した作りにはなっているが、ダイレクトI/Oを使うことでOSのページキャッシュを無視で…

P19 ストレージアーキテクチャの違い

MySQLは更新型(InnoDB使用時) PostgreSQLは追記型更新型は元のデータを更新するが、追記型は元のデータを保持しつつ新しいデータにポインタを付け替えする。ソフトウェアデザイン 2016年 02 月号 [雑誌]出版社/メーカー: 技術評論社発売日: 2016/01/18メディ…

MySQLワークベンチでupdate文を実行すると1175のエラーが発生

【事象】 MySQLのワークベンチでUPDATE文を実行すると、以下のエラーが発生した。 Error Code: 1175. You are using safe update mode and you tried to update a table without a WHERE that uses a KEY column To disable safe mode, toggle the option in…

MySQLワークベンチからプロシージャを楽にコールする方法

CALL `hoge`.`PROC1` ("ほげ", 1, "2014-10-10", "2014-10-10 10-10-10", @a, @b, @c, @d);・Resultセットの内容はきちんと返していればワークベンチにまんま表示される。・実行したいプロシージャのとこを右クリックして、call procedureというメニューを選…