MySQLだけでWindow関数を使って@rowとか使わずに95%ileを計算したい
やり方があってるかどうかわからないので違ってたら教えてほしい。サンプルデータこんな感じ。mysql80 209534> SELECT * FROM t1 LIMIT 3;+---------------------+-----------+| dt | rows_read |+---------------------+-----------+| 2022-05-31 17:16:00 | 0...
View ArticleMySQLが勝手に作るファイルのパーミッションを指定する
TL;DRUMASK 環境変数で制御するMySQL :: MySQL 8.0 リファレンスマニュアル :: B.3.3.1 ファイル権限の問題ファイルであれば最小パーミッションは 0600, ディレクトリであれば 0710 の値になるMySQL :: MySQL 8.0 リファレンスマニュアル :: 4.9...
View ArticleDROP TABLEがどれくらいその他のトラフィックに影響を与えるか……を、手元で測る方法
TL;DRsysbenchでDROP用のテーブルと、その他トラフィック用のテーブルをprepareしてsysbench runしながらDROP TABLEするだけsysbenchは無ければインストール(CentOS 7.xだとepelに入ってる)$ sudo yum install -y sysbenchベンチ先がMySQL 8.0の場合、...
View ArticleどうしてもSELECT COUNT(*) せずに正しいレコードの数を数えたい(が、そんなに都合の良いことはなかった)
TL;DRinnochecksumを使って強引に数えてみたこんなことをするくらいならおとなしくCOUNT(*) した方がマシSHOW TABLE STATUS や information_schema.tables は統計情報ベースなので正確な値ではない、でも COUNT(*) はしたくない、という時。mysql> SHOW TABLE STATUS LIKE...
View Articlemysql_use_result(サーバーサイドバッファリング) vs. history list length
TL;DRトランザクション分離レベルがたとえREAD-UNCOMMITTEDだとしても、クエリの実行中はhistory list lengthは伸びていくREPEATABLE-READ .. トランザクション中はundo recordをパージできないREAD-COMMITTED, READ-UNCOMMITTED .. クエリの実行中はundo recordをパージできないところで、...
View Articlextrabackup 8.0.29とINSTANT COLUMNと
TL;DRPercona XtraBackup 8.0.29 and INSTANT ADD/DROP Columns - Percona Database Performance Blog がほぼ全てxb 8.0.29でMySQL 8.0.29のバックアップを取ろうとした時に、1つでもINSTANT COLUMN(ADDまたはDROP)が存在するとエラーになる $ xtrabackup...
View ArticleMySQLのシノニムではないけど同じような動きをする何か(と、SHOW SLAVE STATUSとSHOW REPLICA STATUSの地味な違い)
TL;DR同じ動作をするけどシノニムではない何かを思いつく限りSee also, MySQLのシノニム - tmtms のメモ and MySQL: desc は explain !? - sakaikの日々雑感~(T)編実装上はシノニムになっていないけれど、同じ(ような)動きをする何かたち。その1その2扱いMASTER, SLAVE系SOURCE,...
View ArticleLINE Developer Meetup #73 - MySQL とわたし
LINE Developer Meetup #73 - MySQL - connpass に参加してきました。私のトークの資料はこちらで、公開されているアーカイブ動画はこちらです。ハッシュタグもまとめてみました。LINE Developer Meetup #73 - MySQL ハッシュタグ拾い - Togetterここから先はポエムです。今回、 “日本MySQLユーザ会のyoku0825”...
View ArticleRe: 続・歯抜けを埋めるSQL(10万件編)
この記事は続・歯抜けを埋めるSQL(10万件編) - sakaikの日々雑感~(T)編への「俺ならこうひねるかな」版です。やってることは坂井さんと大して変わっていませんが、方向性が結構違うのが面白いのでメモしておきます。というかSQLだけでやっていないのでタイトルに反しています()坂井さんの手法でやった時の所要時間はこんなものでした。290ms。mysql80 237> SET...
View Articlereplica_parallel_workers > 1 && replica_preserve_commit_order=ON &&...
TL;DRMySQL Bugs: #89229: FLUSH PRIVILEGES may cause MTS deadlockを踏んだ再現方法。8.0.19でレプリケーション設定をしたMySQLを用意する(8.0.28では再現しなかった。5.7.39でも今のところ再現していない)$ make_replication_sandbox --how_many_slaves=1 8.0.19$ cd...
View ArticlePKの無いテーブルに、後からAUTO_INCREMENT PRIMARY KEYなカラムを足すときの罠
TL;DRInnoDBの暗黙の行IDはテーブルにINSERTした順番で払い出されるソースでは並列で走ると、INSERTした順番がCOMMITした順番とは限らないレプリカではMulti Thread Applierを使っていない限り、COMMITした順番にINSERTがされるよってソースとレプリカでは暗黙の行IDがズレることがある【2022/08/25...
View ArticleMySQL on Windowsで8.0.20とそれ以降のmysqld.exeが--skip-grant-tablesでクラッシュすることがある
TL;DRパラメーターの組み合わせを間違えた場合、本来Abortして起動しないもの(ここまでは意図的)がAbortの処理に失敗してクラッシュする“Not a Bug”, 仕様だということらしいので、気にせず正しい組み合わせで起動してやれば良いだけのはずMySQL Bugs: #108304: mysqld.exe crashes --skip-grant-tables without...
View ArticleMySQL 8.0.30でもrpl_semi_sync_master_enabledとrpl_semi_sync_source_enabledは同じものではない
TL;DRrpl_semi_sync_master_enabledは semisync_master.so由来で rpl_semi_sync_source_eanbledは semisync_source.so由来他のMaster/Source系と違って、MySQLサーバーの中で丸められているわけではなく、 INSTALL PLUGINした時にどちらを入れたかに依存する日々の覚書:...
View ArticleMySQLは実はWindowsのdatadirをそのままLinuxに持って行っても動く(8.0では一ひねり必要)
タイトルがすべて。MySQL 5.7.39をWindowsでinitializeして起動。PS > bin\mysqld --initialize-insecuremysqld: Could not create or access the registry key needed for the MySQL applicationto log to the Windows EventLog....
View ArticleMySQL闇歴史2 MySQLの製品版にRENAME DATABASEはあったことがない
この記事は MySQL闇歴史のカレンダー | Advent Calendar 2022 - Qiitaの2枚目の7日目の記事です。知名度:★★☆☆☆闇度 :★☆☆☆☆日本語ドキュメントは参考程度に度:★★★★☆TL;DR5~6年以上前にDBAやサポートをやっている人は「 RENAME DATABASEでできません?」みたいなことを言われたことはないでしょうか。あるいは、「 RENAME...
View Articleまた今年もConoHaの上でMySQLをビルドする季節がやってきた
この記事は ConoHaのカレンダー | Advent Calendar 2022 - Qiitaの9日目の記事で、 MySQLのカレンダー | Advent Calendar 2022 - Qiitaの9日目の記事でもあります。去年は失敗したCentOS 9 Streamでのビルドを今年は成功させました。2016年 日々の覚書: MySQLのビルド環境にConoHaを選んでいる理由2017年...
View ArticleRe: MySQL 5.6.9のmysqlクライアントがujis, sjis, cp932で落ちる(5.6.12で修正)
この記事は MySQL闇歴史のカレンダー | Advent Calendar 2022 の2枚目の14日目の記事です。TL;DRMySQL 5.6のGA(5.6.10)直後にあったmysqlコマンドラインクライアントのバグの話MySQL Bugs: #68107: mysql client with --default-character-set=ujis crashesが全てだし日々の覚書:...
View ArticleST_FIELD_INFO の順番がやっと何のことだか理解したはなし
このエントリは MySQL Advent Calendar 2022の17日目の記事です。TL;DRSource Code...
View Article見えるバグレポート、見えないバグレポート、そもそもbugs.mysql.comじゃないバグレポート
この記事は MySQL闇歴史 Advent Calendar 2022の2枚目の19日目です。知名度:★★☆☆☆闇度...
View Articleインデックス vs InnoDBログ書き込みのサイズ観測
TL;DRセカンダリーキーは意外とログ書き込みに響く。無駄なやつをなるべく消したりマージできたりするといいかも。ナチュラルキーを使うのは書き込み面では誤差か。読み取りで差が出るといいなと思うけれど今日はやらない。tablesizesize_vs_t1lsnlsn_vs_t1commentt113,631,4881.0031,977,6821.00auto_increment PK + 0...
View Article