ネタ的には YAPC::Hokkaido 2016
Sapporo の時のリライト(8.0.1のリリースノートの情報を追加した感じ)で、相変わらずいくつかの側面に分けてMySQL
8.0に期待していることやこうなるんじゃないかな感を発表しました。
MySQL 8.0.1のリリースノート
が結構量が増えていて、時間も前回の20分に対して45分と倍増していたんですが、時間ギリギリまで結構色々しゃべりました。
MySQL 5.7の次のMySQL 8.0はどんなものになるだろう from
…
いやあ試された試された。
- (金曜日) 昼の便で夕方には市内に着く予定だったのが出発遅延、チェックインしたのは日付が変わったくらい
- (土曜日)
(ちゃんと間に合う時間に)目を覚ましたら、外がなんか人生初体験レベルの積雪だった。東京と同じ感覚で新雪を踏もうとしたらズボっといった
- (土曜日) @kunihirotanakaさん と @yoheiaさん
が色々似ていることに懇親会で気付く。そしてやっぱり @yoheiaさん のアイコンは貯金箱だと認識されていた
- (日曜日) まさかの止まない雪。続々とやられていく首都圏のPerl …
日々の覚書: MySQL
5.7.6でエラーコードが変わった件 の時からMySQLのエラーコードに3000番台が加わった。
それまで1000番台はサーバーサイド、2000番台はクライアントサイドだけだったものが、3000番台もサーバーサイドのエラーコードとして設定されている(エラー番号はMySQL
5.7.16現在)
エラー番号 | マクロ | 備考 |
---|---|---|
1000~1884 | ER_*, WARN_* | サーバーサイドエラー |
2000~2062 | CR_* | クライアントサイドエラー(libmysqlclientの場合) |
… |
日々の覚書: MySQL 5.7.9でSHUTDOWN *ステートメント*
が実装されたよ! (我ながらなんて雑なエントリーなんだ。。)のタイミングで、mysqladmin
shutdown
の内部動作にも変更が入っていて、
A new SHUTDOWN SQL statement is available. This provides an
SQL-level interface to the same functionality previously
available using the mysqladmin shutdown command or the
mysql_shutdown() C API function. See SHUTDOWN Syntax.
The mysql_shutdown() function and corresponding COM_SHUTDOWN
client/server protocol command are deprecated and will be removed
in a future version of MySQL. Instead, use mysql_query() to
execute a SHUTDOWN statement.
MySQL :: MySQL 5.7 Release Notes :: Changes in …
先月、詳解MySQL 5.7を発刊したばかりであるが、MySQL 5.7自体は去年の10月にリリースされたバージョンである。それから約1年弱、MySQLは開発の手を緩めること無く日々改良を重ねている。
そう、MySQL 8.0の登場である。
現在はDevelopment Milestone Release(通称DMR)という状態なので、まだ正式版における機能が固まっている段階ではないという点には注意して欲しい。MySQLの開発プロセスでは、DMRをリリースするごとにその段階で成熟した機能をマージする。DMRを何度かリリースした後に、キリの良いところでリリース候補版となって正式版で追加される機能が一応確定し、その後バグ修正を経て正式版(GA版)がリリースされる予定となっている。詳しくはMySQLのマニュアルを参照して欲しい。
…
[さらに読む]
MySQL :: WL#8706: Persistent storage of Histogram
data
ドキュメントが出てきてないので正直使い方とか全くわからないんだけれども。
mysql80> DESC mysql.column_stats;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| database_name | varchar(64) | NO | PRI | NULL | |
| table_name | varchar(64) | NO | PRI | NULL | |
| column_name | varchar(64) | NO | PRI | NULL | |
| histogram | json | NO | | NULL | |
+---------------+-------------+------+-----+---------+-------+
4 rows in set (0.01 sec)
取り敢えずJSONで手で書くのか。。
…
INVISIBLEなるキーワードがインデックスに指定できるようになったので、取り敢えずADD KEYしてみたけれど…。
mysql80> INSERT INTO t1 VALUES (1, 'one'), (2, 'two'), (3, 'three');[さらに読む]
Query OK, 3 rows affected (0.01 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql80> ALTER TABLE t1 ADD KEY (val) INVISIBLE;
Query OK, 0 rows affected (0.03 sec)
Records: 0 Duplicates: 0 Warnings: 0
*************************** 1. row ***************************
Table: t1
Create Table: CREATE TABLE `t1` (
`num` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`val` varchar(32) DEFAULT NULL,
UNIQUE KEY `num` (`num`),
KEY `val` (`val`) /*!50800 INVISIBLE */
) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4
1 row in set (0.01 sec)
mysql80> explain SELECT * FROM t1 WHERE val = 'two'; …
MySQL 8.0.0時代のmy.cnfの探り方 で出てきたvariables_info の他にも
events_errors_summary_* というテーブルが増えてる。
$ diff <(mysql80 -sse "SHOW TABLES FROM p_s") <(mysql57 -sse "SHOW TABLES FROM p_s")
3,7d2
< events_errors_summary_by_account_by_error
< events_errors_summary_by_host_by_error
< events_errors_summary_by_thread_by_error
< events_errors_summary_by_user_by_error
< events_errors_summary_global_by_error
93d87
< variables_info
中身はこんな感じ。
mysql80> SELECT * FROM events_errors_summary_global_by_error LIMIT 10;[さらに読む]
+--------------+-------------------------+-----------+------------------+-------------------+------------+-----------+
| ERROR_NUMBER | ERROR_NAME | SQL_STATE | SUM_ERROR_RAISED | SUM_ERROR_HANDLED | FIRST_SEEN | LAST_SEEN | …
取り敢えず mysqld --initialize
したdatadirを覗いてみると、見慣れないSDIファイルがあることと見慣れた.frmファイルが **ない**
ことに気付いた。
$ ll data/mysql/*.frm
ls: cannot access data/mysql/*.frm: No such file or directory
$ ll data/*.SDI
-rw-r----- 1 yoku0825 yoku0825 225 Sep 5 10:17 data/performance_sche_3.SDI
-rw-r----- 1 yoku0825 yoku0825 210 Sep 5 10:17 data/sys_4.SDI
SDIファイルは他にもいっぱいあって、 `find -name "*.SDI"` とかやるとごろっと出てくる。
Seralized Dictionary Informationの略らしい。New Data
Dictionaryの一環で、.frmファイルからSDIファイルに変わったらしい。
中身はJSONで、いかにもメタデータっぽいのが詰まってる。
…
Planning the defaults for MySQL 5.8 | MySQL Server
Blog の時点で
In addition to utf8mb4, we are also considering switching the
default collation to be utf8mb4_unicode_520_ci.
と地雷宣言が為されていた文字コード問題。
(utf8mb4_unicode_520_ci は🍣と🍺を区別するけど、ハハとパパを区別してくれないヤーツ)
| | utf8mb4_bin | utf8mb4_general_ci | utf8mb4_unicode_ci | utf8mb4_unicode_520_ci|[さらに読む]
|--------------------|-------------|--------------------|--------------------|-----------------------|
| Hiragana-Katakana | cs (unkind) | cs (unkind) | ci (good) | ci(good) |
| Youon | cs (good) | cs (good) | ci (critical) | ci(critical) |
| Dakuten-Handakuten | cs (good) | …