mita2 database life

主にMySQLに関するメモです

MySQL の feature request を眺める

feature request

MySQL のバグは bugs.mysql.com で管理されています。 このサイトにはバグだけでなく、機能改善(feature request) の要望も投稿できます。

bugs.mysql.com

眺めてみる

普段はバグ(不具合)に注目してみているのですが、今日は、FRをみてみようと思います。

Advanced Search から StatusがVerified、Severity が S4(Feature request ) を条件として検索してみます。 ID順でソートし、最近投稿されたものを見てみます。

f:id:mita2db:20200418141732p:plain
bugs.mysql.com

これ確かに欲しい!と思ったら

Affects me というボタンがあります。「このバグやリクエストは自分にも関係がある」ことを示すものです。投票機能のようなものですね。 Affects me の数が多ければ、MySQLの開発者の人たちは、「このリクエストはニーズが高い」とわかるわけです。もしかしたら、優先して実装してくれるかもしれません。

f:id:mita2db:20200418150836p:plain
affectsme

ということで、「これ良さそう!」というFeature request があったら、Affects Me しましょう。

when log_slow_extra is on,add some new status

スロークエリに出力されるステータスを増やして欲しい。具体的には、InnoDB_pages_distinct, InnoDB_IO_r_wait, InnoDB_rec_lock_wait, InnoDB_queue_wait があるとすごい便利!というFR。

MySQL Bugs: #99261: when log_slow_extra is on,add some new status

実は、Perconaサーバにはこの機能があります。Percona ではこのようなスロークエリログが出ます。 InnoDB_IO_r_bytes が大きいものを見れば、DISK IOに負荷をかけているSQLがすぐ特定できます。実際、使っていて、非常に便利です。

# User@Host: mailboxer[mailboxer] @  [192.168.10.165]
# Thread_id: 11167745  Schema: board
# Query_time: 1.009400  Lock_time: 0.000190  Rows_sent: 4  Rows_examined: 1543719  Rows_affected: 0  Rows_read: 4
# Bytes_sent: 278  Tmp_tables: 0  Tmp_disk_tables: 0  Tmp_table_sizes: 0
# InnoDB_trx_id: 1500
# QC_Hit: No  Full_scan: Yes  Full_join: No  Tmp_table: No  Tmp_table_on_disk: No
# Filesort: No  Filesort_on_disk: No  Merge_passes: 0
#   InnoDB_IO_r_ops: 6415  InnoDB_IO_r_bytes: 105103360  InnoDB_IO_r_wait: 0.001279
#   InnoDB_rec_lock_wait: 0.000000  InnoDB_queue_wait: 0.000000
#   InnoDB_pages_distinct: 6430
SET timestamp=1346844943;
SELECT id,title,production_year FROM title WHERE title = 'Bambi';

これは絶対便利なので、みんなで Affects Me しましょう。

JSON Path implement negative offset

MySQL Bugs: #99238: JSON Path implement negative offset

JSONで配列から値を取り出すときに、「後ろから数えて何番目」という指定方法をサポートしてほしい。というFR。

多くのプログラミング言語では、配列の要素を指定するときにマイナスで「後ろから数えて何番目」と指定できますね。

mysql> SELECT JSON_EXTRACT(JSON_ARRAY(1, 2, 3), '$[-1]');

Insufficient information in explain

MySQL Bugs: #99107: Insufficient information in explain

EXPLAINしたときに、エイリアスではなくスキーマ名とテーブル名を出してほしい。というFR。 テーブルが多いと、エイリアスとテーブルのマッピングが覚えきれずに、苦労する。。。 昔からこの仕様なので、過去にも同様のFRは出ていそうですが、、、

-- EXPLAINにはテーブル名が表示されずにエイリアスである「x」が表示される
*************************** 1. row ***************************
           id: 1
  select_type: SIMPLE
        table: x
   partitions: NULL
         type: ALL
possible_keys: NULL
          key: NULL
      key_len: NULL
          ref: NULL
         rows: 986400
     filtered: 100.00
        Extra: NULL
1 row in set, 1 warning (0.00 sec)

これも、ぜひ対応してほしい。Affects Me!

Manage buf blocks for InnoDB temp tablespace separately in buffer pool

MySQL Bugs: #99020: Manage buf blocks for InnoDB temp tablespace separately in buffer pool

InnoDB をテンポラリテーブルとして利用した場合、パフォーマンス劣化してしまうケースがある。internal_tmp_disk_storage_engine = MYISAM を指定して回避できていたが、8.0.16 から internal_tmp_disk_storage_engine が削除され、InnoDBしか選択できなくなってしまた。InnoDB はテンポラリテーブルとして利用するには、まだまだオーバーヘッドがあるので、改善してほしい。というFR。