MySQL道普請便り
第132回 Internal Temporary Table(内部テンポラリテーブル)について[その2]
第129回 Internal Temporary Table
今回はその続きで,
今回も前回同様MySQL 8.
TempTableストレージエンジン
MySQL 8.
TempTableストレージエンジンの特徴として以下があります。
- 可変長データ型の効率的なストレージの提供
- バイナリラージオブジェクト型のサポート
- グローバルメモリでの管理
- mmapファイルによるオーバーフローメカニズム
それぞれについて簡単に紹介します。
以後,
可変長データ型の効率的なストレージの提供
まず,
これはInnoDBストレージエンジンにおけるCHAR型と同等の処理になってしまいます
バイナリラージオブジェクト型のサポート
次に,
グローバルメモリ領域での管理
第129回の記事で説明しましたが,
最大値はtemptable_
パラメータから設定可能で,
mmapファイルによるオーバーフローメカニズム
従来のインメモリテンポラリテーブルは,
それが,temptable_
であると,
temptable_
であると,
設定について
MySQL 8.
- インメモリテンポラリテーブル:TempTable ディスクテンポラリテーブル:TempTable
(デフォルト) - インメモリテンポラリテーブル:TempTable ディスクテンポラリテーブル:InnoDB
- インメモリテンポラリテーブル:Memory ディスクテンポラリテーブル:InnoDB
この中で,
ここからは筆者の個人の意見なので,
筆者の感覚では,
いくつかテストしたところ,
しかし,
- Bug #97920 Aggregation function [sum()] return random numbers
- Bug #98739 TempTable storage engine slow if mmap is required
- Bug #98782 Using TempTable engine for GROUP BY is slower than using MEMORY engine
- Bug #99136 TempTable wastes 1MB for each connection in thread cache
これらのバグはMySQL 8.
また,
それは1.の場合,temptable_
パラメータを超えるとmmapテンポラリファイルを作成します。その際に大きな内部テンポラリテーブルを作成するクエリがあると,
まとめ
TempTableストレージエンジンにより,
内部テンポラリテーブルについて,
バックナンバー
MySQL道普請便り
- 第171回 MyDumperを使ってみよう[その2]
- 第170回 MySQLのキーワードと予約語をテーブルに使用したい場合
- 第169回 pt-variable-advisorを使ってみよう
- 第168回 MyDumperを使ってみよう[その1]
- 第167回 M1搭載MacのDockerでMySQLを動かしてみる
- 第166回 Performance_schema関数
- 第165回 MySQLの圧縮いろいろ
- 第164回 admin_address,admin_portを設定しよう
- 第163回 sysbench 1.0を使ってMySQLの負荷テストをする
- 第162回 mysqlクライアントの履歴を確認してみる