MySQL

PostgreSQLのROLLUP

こちらでROLLUPが考察さているが、PostgreSQLも先月(2016年1月)リリースのversion 9.5でROLLUPをサポートしたので、試す。 PostgreSQLのドキュメントはこちら。みるとわかるけども、PostgreSQLとSQL-ServerはSQL標準準拠。MySQLが方言。 サンプルはこちらと…

ロングトランザクションとレプリケーションとPostgreSQL,MySQL

PostgreSQLとMySQL(MariaDB)のレプリケーションはいろいろ違うが、ロングトランザクションでの挙動の差は興味深いわりにあまり言及されないので、さくっと書く。 MySQLのレプリケーションはバイナリログベースである。動作は以下のとおり。 トランザクション…

クラッシュセーフなスレーブ

MySQLでslaveをクラッシュセーフ*1にするには、 MySQL 5.6以上 relay_log_recovery=ON relay_log_info_repository=TABLE というセッティングが必要。詳細は"こちら"、翻訳版は"こちら"。 ざっくり言えば、リレーログのreplayと同じトランザクションで、InnoD…

MariaDB/MySQL C client libraryまとめ

ちょっと勘違いしていたので、まとめ。(2014.12.3追記:以下の書籍にも記述した。) プロトコルバージョン まず、プロトコルから。(少なくとも)MySQL 5.0.20以前から、プロトコルバージョンは"10"。MySQL 5.6.3xもMariaDB 10.0.11も、プロトコルバージョンは1…

ZabbixでMySQLスレーブの Slave_IO_RunningとSlave_SQL_Runningを監視する

表題の件に関するメモ。Zabbixは便利だけどTempalete_App_MySQLでは、レプリケーションしたときに一番知りたいSlave_IO_RunningとSlave_SQL_Runningの値を監視できない。なのでUserParameterを設定して監視することにした。 Zabbixのインストール方法などはZ…

MySQL、MariaDB、PostgreSQLのオプティマイザ/エクゼキュータ比較用スクリプト群

こちらの実験を手元で再試行できるように、スクリプト群と実験方法を示す。 ここで示した例以外にも、こちらでMariaDB vs MysSQLのオプティマイザ機能比較があるので、各自試してみるとよいと思う。 https://mariadb.com/kb/en/optimizer-switch/ スクリプト…

長年の議論に終止符 -- MySQL、MariaDB、PostgreSQLのオプティマイザ/エクゼキュータ比較

https://mariadb.com/kb/en/optimizer-switch/にあるように、MariaDBのオプティマイザはかなり改良されている。 では、MariaDBのオプティマイザ/エクゼキュータはどの程度優秀か、4つのSELECT文の実行を通してMySQLと(ついでにPostgreSQLと)比較してみる。 …

MySQLのCOMMIT時におけるfsyncの実行タイミング

バージョン5.6で"innodb_flush_log_at_trx_commit=1"の挙動が変わった的な話があったので、こっちで軽く調べ、さらに追加調査したので結果を書く。 目的と結論 目的 簡単に書くと、5.6でバイナリログのグループコミットが入ってREDOログとバイナリログの書込…

長年の議論に終止符 -- MySQLとMariaDBの違い一覧

(2014.12.3追記:このblogの内容は、以下の書籍にも反映させた。) SQLレベルの差異 MariaDB5.5とMySQL5.5ではSQLレベルでの違いはほとんどなかった。autoincrementの最大値の扱いくらい。 ただし、MariaDB10.0でREGEXPがマルチバイト対応になったので、アプ…

MySQL5.6のordered_commit()とHA_IGNORE_DURABILITYとinnodb_flush_log_at_trx_commit

『MySQL 5.6 ではinnodb_flush_log_at_trx_commitの意味が MySQL 5.5 と違う』で、論理飛躍*1や間違い*2があったので、結論が正しいかどうかチェックしてみた。 なお、flushというかfsync()の呼び出しについて、および上記の記事に対する結論はこちらに書い…

PostgreSQLの共有バッファ(shared_buffer)とMySQLのバッファプール(buffer_pool)のメカニズム比較

PostgreSQLとMySQLのバッファについて。 PostgreSQLのバッファマネージャ 詳細はこちらをみて頂くとして、PostgreSQLのバッファマネージャは、2005年リリースのバージョン8.1で大幅に変わった。以下の表をみて頂くとわかるようにページ置換アルゴリズム…

MySQLユーザのためのPostgreSQL:WALログとレプリケーション講座

Streaming Replication搭載のPostgreSQL9.0リリースが近づき、 MySQLとのレプリケーション比較が今後ますます盛んになると思われるので、 MySQLユーザ向けにPostgreSQLの説明をしてみようと思う。参考->PostgreSQLユーザのためのMySQLバイナリログ・レプリケ…

PostgreSQLユーザのためのMySQLバイナリログ・レプリケーション講座

Original Streaming Replication搭載のPostgreSQL9.0リリースが近づき、MySQLとのレプリケーション比較が今後ますます盛んになると思われるので、PostgreSQLユーザ向けにMySQLの説明を行う。参考->MySQLユーザのためのPostgreSQL:WALログとレプリケーション…

MySQL: ステータス情報の収集と表示

以下、DBマガジン2010年7月号の草稿から ステータス情報をCSV形式で収集する mysqladminコマンドの結果をcsv形式で保存するperlスクリプトstatus2csv.plを示す。 変数$fileに結果を保存するファイル名を指定すればすぐに使うことができる。

MySQL: innotopとサンプリング

以下、DBマガジン2010年7月号の草稿から innotop innotopを使えば、現在どんなSQLが実行されているかをリアルタイムで知ることができる。 ここでは簡単な使い方と応用編としてSQLのサンプリング、および解析スクリプトを紹介する。ダウンロードは以下のURLか…