2016年9月13日火曜日

MySQL 8.0.0でついにヒストグラムがサポートされるらしい(が、自動で統計してくれるわけではない様子)

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で手で書くのか。。


と思ったら 8.0.0現在、こんなw

Note
Currently, the optimizer does not yet consult the column_stats table in the course of query execution plan construction.

MySQL :: MySQL 8.0 Reference Manual :: 9.9.6 Optimizer Statistics


【2017/08/24 11:21】

一体いつ変わったのかリリースノートにも全然書いてないんだけど、 mysql.column_statistics に名前が変わってシステムテーブルとして直接参照が不可能に、中身を覗くには information_schema.column_statistics に名前が変わっていた。
mysql80 8> SELECT * FROM i_s.column_statistics\G
*************************** 1. row ***************************
SCHEMA_NAME: d1
 TABLE_NAME: t1
COLUMN_NAME: val
  HISTOGRAM: {"buckets": [["base64:type254:b25l", 0.5], ["base64:type254:dHdv", 1]], "data-type": "string", "charset-id": 303, "null-values": 0, "last-updated": "2017-08-24 01:17:07.000000", "sampling-rate": 1, "histogram-type": "singleton", "number-of-buckets-specified": 10}
1 row in set (0.00 sec)
ANALYZE TABLE .. UPDATE HISTOGRAM .. なる構文も増えていて、ちょっと今後が気になる(RCになったらちゃんと調べようかな)

0 件のコメント :

コメントを投稿