MySQL

P204 sysスキーマ(5.7新機能)

実体は、便利なビューやストアドプログラムの集合体である。 MySQL本体とは異なるプロジェクトとして開発されたツールという経緯上、MySQL5.6でも利用可能である。MySQL Workbenchからインストールする方がお手軽であるが、GitHubからソースコードを入手して…

P186 パフォーマンススキーマとインフォメーションスキーマ

[パフォーマンススキーマ] ・5.5より導入されている機能 ・パフォーマンスデータの取得が目的(DTraceやSystemTap等で得れる情報) ・mysqld内部でコードを実行するたびに取得される[インフォメーションスキーマ(情報スキーマ)] ・5.0より導入されている機能 …

P162 InnoDBモニターの有効化方法の変更(5.7新機能)

[MySQL5.6上でInnoDBロックモニターを有効化する方法] CREATE TABLE innodb_lock_monitor (a int) ENGINE INNODB; なお、offにするにはDROP TABLEするか、MySQLサーバーを再起動する事である。[MySQL5.7上でInnoDBロックモニターを有効化する方法] SET GLOBA…

P79 オプティマイザトレース

EXPLAINコマンドは実行計画を知るうえでは必須かつ標準的な方法である。 しかし、オプティマイザが最終的に選択した実行計画についてのみであり、どのような過程で最適化やコスト計算、あるいは実行計画の比較が行われたかは分からない。 オプティマイザトレ…

P75 実行中のクエリに対するEXPLAIN(5.7新機能)

例) SHOW FULL PROCESSLISTなどで調べた対象のセッションのコネクションIDが777に対してEXPLAINする場合 EXPLAIN FOR CONNECTION 777詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド作者: 奥野幹也出版社/メーカー: 翔泳社発売日: 2016/09/…

P70 worldサンプルデータベース

MySQLが公式に提供しているサンプルデータベース 勉強用などに利用する際に用いれる。http://dev.mysql.com/doc/index-other.html 詳解MySQL 5.7 止まらぬ進化に乗り遅れないためのテクニカルガイド作者: 奥野幹也出版社/メーカー: 翔泳社発売日: 2016/09/01…

P2 MySQLの特徴

[実装されている主な機能] ・ANSI SQL標準に準拠(但し、一部の文法は除く) ・ストレージエンジン ・ACID準拠のトランザクション(ストレージエンジンによる) ・XAトランザクション ・非同期あるいは準同期のレプリケーション ・水平パーティショニング ・スト…

P4 商用版MySQLサーバー

[商用版MySQLサーバーに向いている用途] ・追加のプラグインを使いたい ・モニタリングやバックアップのツールを使いたい ・オフィシャルなサポートが欲しい ・GPLv2でないライセンスでMySQLをバンドルしたい[商用版サーバーに付属しているプラグイン] ●MySQ…

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というメニューを…