MySQL

【MySQL】データベースのパーティショニングとはなんぞやという話

パーティショニングについての覚書。 一応 MySQL が前提。先に具体的な実体を書いたあと、それがパフォーマンス向上にどう寄与するのかを書きます。 パーティショニング is 何 簡単に言えば、データベースのテーブルを物理的に分割することです。テーブルの…

MySQLのIndex Condition Pushdown とはなんぞやという話

MySQL のバージョン5.6から追加された機能に、Index Condition Pushdown(ICP) というものがあります。ICP は「マルチカラムインデックスの順番を意識しなくてもよくなる仕組み」的な説明がされることがあり、それはそれで間違いではないのかもしれません。が…

MySQL(InnoDB)のネクストキーロックの仕組みと範囲を図解する

MySQL(InnoDB) のロックにはレコードロックとかギャップロックとかネクストキーロックとかありますが、結構ややこしくて、クエリで条件文が与えられた時にそれがどのようなロックになるのかをイメージし辛い問題が自分の中でありました。ので、実験してみた(…

MySQL8で削除されたシステム変数たち

MySQL8 にしてから、分離レベルを確認するために以下の文を実行したらエラーが発生するようになりました。 SELECT @@GLOBAL.tx_isolation, @@tx_isolation; ERROR 1193 (HY000): Unknown system variable 'tx_isolation' どうやら原因は 8.0.3 から tx_isola…

Sequel ProはそもそもMySQL8に対応していなかった件

昨日以下の記事を書きました。 norikone.hatenablog.com MySQL8 からデフォルトの認証方式が変わったせいで Sequel Pro からログインできないという話で、認証方式を変えればログインできるようになります。が、ログインできてもその後のテーブル操作等が一…

MySQL8から認証方式が変わったせいでSequelProからログインできなかった件

※追記 どうやら Sequel Pro は MySQL8 にまだ対応しておらず、ログインできないだけではなくて DB を選択するとクラッシュします。詳しくは以下に書きました。 norikone.hatenablog.com MySQL を 8 にアップグレードしたところ、Sequel Pro からログインでき…

重複行をまとめた上でのカウントはGROUP BYではなくDISTINCTを使う

"重複したカラムをまとめた上でのカウント" がしたい時に、いつもどおりGROUP BYを使ったらうまくカウントできませんでした。 そりゃそうだろ、という話ではありますが。 以下、MySQLを使っています。 例えば、ユーザが何かしらの投稿をするサイトがあって、…

MySQL バイナリログとInnoDBログについて調べたメモ

MySQLのストレージエンジンであるInnoDBに備わっているバイナリログとInnoDBログについてよく分からなかったので軽く触れてみることにしましたが、ちょっと情報が古いかもしれません。 InnoDBには、InnoDBログとバイナリログが存在します。InnoDBログはInnoD…