1年半くらい前に書かれたらしいけれど、ふと今日 「7の倍数」を表す正規表現 - Qiita を見つけて読んだ。 (取り敢えず今の俺の中で)正規表現といえばMySQL 8.0。
そして(取り敢えず今の俺の中で)forループ的に数値をテストするといえばCTE、CTEといえばMySQL 8.0。
やってみます。 …
[さらに読む]1年半くらい前に書かれたらしいけれど、ふと今日 「7の倍数」を表す正規表現 - Qiita を見つけて読んだ。 (取り敢えず今の俺の中で)正規表現といえばMySQL 8.0。
そして(取り敢えず今の俺の中で)forループ的に数値をテストするといえばCTE、CTEといえばMySQL 8.0。
やってみます。 …
[さらに読む]TL;DR
docker run する時に --cap-add=SYS_NICE
を付け加えてやると上手くいく
yum install mysql-community-server でMySQL
8.0.11を入れると
mysqld が Operation not permitted で転ける
$ docker run -it centos:centos7 bash
[root@457e75eaa657 /]# yum install -y https://dev.mysql.com/get/mysql80-community-release-el7-1.noarch.rpm
[root@457e75eaa657 /]# yum install -y mysql-community-server
[root@457e75eaa657 /]# mysqld --version
bash: /usr/sbin/mysqld: Operation not permitted
…
[さらに読む]TL;DR
information_schema.innodb_buffer_page は重い
ib_buffer_pool にはテーブルスペースIDが記録されるので、それを使ってほげほげする
mysql> SET GLOBAL innodb_buffer_pool_dump_now = 1;
mysql> SELECT space, name FROM information_schema.innodb_sys_tablespaces INTO OUTFILE '/tmp/space.txt';
$ awk -F, '{print $1}' /var/lib/mysql/ib_buffer_pool | sort | join - <(sort /tmp/space.txt) | uniq -c | sort -n -r -k 1 | head
54570 50 hogehoge/fugafuga
12192 27 hogehoge/message
10494 31 hogehoge/piyopiyo
9683 42 hogehoge/magomago
6103 30 hogehoge/message_inbox
MySQL Bugs: #90733: TheMySQL server has hanged up when query on the sys.innodb_buffer_stats_by_table …
[さらに読む]MySQLのZero Dateへの対処法
MySQLの0000-00-00 00:00:00は使ってはならない - そーだいなるらくがき帳
このエントリで、MySQLのゼロが含まれる日付け、いわゆるZero Dateについての問題点が色々挙げられているのを見かけたので、手短に対処法を述べておきたい。
Zero Dateが存在する理由なぜそんな厄介なデータが存在するのかというのは、開発の経緯や互換性といった深淵な理由からなので気にしないで欲しい。まあ、人間は完璧ではないので、人間が作るプログラムも完璧ではないということだ。
当然ながらSQL標準から外れているものは、例外的な使い方をしたい場合を除き、使うべきではない。アンチパターンも使い方次第という話もあるが、例外的な使い方は基本的に苦労が増えるので使うべきではない。 …
[さらに読む]
MySQL8.0 SYSスキーマの確認。
基本的には、MySQL5.7と変わりは無いですが、ロックを取得するVIEW内部のテーブルがInformation_schemaからPerformance_Schemaに変更になったりしている。但し、VIEW内部のスクリプト変更なので基本的に問題無く、これまで通り利用する事が可能です。
オフィシャルマニュアル: Chapter 26 MySQL sys Schema
確認したバージョン
root@localhost [mysql]> select @@version; +-----------+ | @@version | +-----------+ | 8.0.11 | +-----------+ 1 row in set (0.00 sec) root@localhost [mysql]>
ドキュメント
MySQL8.0 SYS スキーマ概要 from …
[さらに読む]ゴールデンウィークはいかがお過ごしされただろうか。今年は天気も良く、行楽日和が続いたように思う。
さて、先日MySQL 8.0が正式にリリースされた。少し時間が経ってしまったが、今回はMySQL 8.0の新機能について紹介したい。コミュニティ版のダウンロードはこちらから可能だ。
ひとつ前の正式バージョンはMySQL 5.7だったのだが、MySQL 8.0は非常に大きなリファクタリングが含まれており、5.x台のバージョン番号を捨て去ろうという話があった。そこで、次のメジャーバージョンは最初の桁を増やすということになったのだが、MySQL 6.0は過去に既に存在し、買収などの騒ぎで開発が頓挫してしまった経緯がある。7.xはMySQL NDB …
[さらに読む]MySQL5.7からMySQL8.0へのアップグレード対応時のメモ
他のインスタンスも既に、アップグレードしましたが、UTF8MB4以外の文字コードを利用していたり、パーティションエンジンを利用していたので、
少々手間取ってしまいました。こちらの、アップグレード例はもともと、MySQL5.7で初期インストールして利用していたデータベースでUTF8MB4を利用して、
パーティションもInnoDB Native
Partitionを利用していたので直ぐにアップグレードする事が出来ました。ただし、いくつか設定を変更しました。
アップグレード手順
1: mysqlsh (Ver 8.0.11) にてアップグレード事前チェックを行う
2: MySQL8.0のバリナリーダウンロード (Generic Tarを利用しました)
3: …
たぶん本当にメモ。 MySQL :: MySQL 8.0 Reference Manual :: 1.4 What Is New in MySQL 8.0 caching_sha2_password, it is now the preferred authentication plugin
innodb_undo_log_truncate is enabled by default.
The default innodb_autoinc_lock_mode setting is now 2 (interleaved).
STATEMENT_DIGEST関数
はSQLステートメントから定数をノーマライズしたもの(ダイジェスト)をハッシュ化して返してくれる関数。
MySQL 5.6とそれ以降の
performance_schema.events_statements_summary_by_digest
なんかで使われているアレを関数で引くことができる。 パッと思いつく感じだと、「今まではダイジェストの値を直接計算できなかったから
QUERY_SAMPLE_TEXT カラムの値とかから何となく探していたけど、これからは直接
WHERE digest = STATEMENT_DIGEST('SELECT ..') …