17 件中 1 - 10 件を表示
次の 7 件 »
Displaying posts with tag: MySQL 8.0 (reset)
MySQL Benchmark-003 環境構築その3 SSD選択

この MySQL ベンチマーク シリーズはMySQL-Benchmarkタグから一覧できます。
最初の方で環境構築をしていて、その環境で実験しています。

実験で使うSSDを決めるために簡単な比較をしてみる

1回目のベンチマークではもともと持っていたIntelのNVMe SSD 760pを使ったものの、試しに …

[さらに読む]
MySQL Benchmark-002 環境構築その2 10Gb NIC導入

この MySQL ベンチマーク シリーズはMySQL-Benchmarkタグから一覧できます。
最初の方で環境構築をしていて、その環境で実験しています。

前回1Gbのネットワーク帯域がボトルネックになってしまうことがわかったので、10Gbの環境を作っていく

導入機器

NIC

XG-C 100C

コンシューマ向け(?)の …

[さらに読む]
8.0.22のprepared statementの調査続き1

tombo2.hatenablog.com

↑についてリノベ8.0.22で話した。

このとき、MTG中にそれぞれが試してみるとgoだと動く、rubyだと応答がなくなるという話をしていた。
tmtmさんがRuby, Cで追実験した結果をブログにしてくれていたので、僕もgoの結果を書いておこうと思う。

tmtms.hatenablog.com

結果を先に書くと、dockerで公式イメージの8.0.22に対して実行するとドキュメント通りsortはされないが結果は帰ってきた。 …

[さらに読む]
MySQL Benchmark-001 環境構築その1

今年の冬はお家ベンチマーク環境を暖房にする気持ちでベンチマークをやっていこうと思う。

まずは環境構築から。

環境

[さらに読む]
8.0.22でのprepared statementの挙動変化

概要

8.0.22のリリースノートを見るとprepared statementの挙動が変わっているらしい。

特にこれが気になったので、試してみる

For a prepared statement of the form SELECT expr1, expr2, ... FROM table ORDER BY ?, passing an integer value N for the parameter no longer causes ordering of the results by the Nth expression in the select list; the results are no longer ordered, as is expected with ORDER BY constant.

どうやら8.0.22からはSELECT expr1, expr2, ... FROM table ORDER BY ? といったクエリをprepareして、placeholderにselect listの番号を表す数値Nを指定する場合にsortが効かなくなるらしい

実験

8.0.21, …

[さらに読む]
MySQLでredis storage engineを作った

MySQLのストレージエンジンはplugableになっていて、APIを実装すれば自作のストレージエンジンを組み込むことができる。 ということで、試しにRedisをストレージエンジンとして使うRedis Storage Engineを作りました。

github.com

途中で飽きてしまった ちまちま実装するよりC++の勉強とInnoDB読んだほうが良さそうと思ったので、お蔵入りするつもりでしたが、Yahoo! …

[さらに読む]
MySQLで今月の日付一覧を得る with 再帰CTE

sakaikさんのブログで今月の日付一覧を得るクエリを読んでいて、ここで紹介されているクエリが手元で実行できなかったので、メモ。

sakaik.hateblo.jp

原因は手元の環境が8.0.17でVALUES()関数がなかったことが原因。

よく見るとvalues()関数でテーブルを作って、それを自己結合しつつ出力を作ってソートしている。
再帰CTEでシーケンスが作れるので、それを使っても良いかもなと思い、復習がてら書いてみました。

with recursive rec(V, D) as (
  select 1, cast(date_format(@dt, '%Y-%m-01') as date)
  union all
  select V+1, date_add(D, interval +1 day)
  from rec
  where D < last_day(@dt)
)
select D as `DATE` from rec; …
[さらに読む]
NOT IN (Subquery)などにおけるNULL

MySQLで(他のDBMSは知らない)ある値のリストxを使ってテーブルからIN(x), NOT IN(x)を使ってデータを取っても2つのクエリで全件を取ってこれないという話は有名だが、MySQL Server Blogにantijoin optimizationも含めた解説記事が出たので、これを機に(is null, is true, in()などとNULLに対する比較演算を整理してみる。

reference: https://mysqlserverteam.com/a-must-know-about-not-in-in-sql-more-antijoin-optimization/

結論

[さらに読む]
MySQL 8.0.18のHASH JOINを試した

8.0.18がリリースされたのでHash Joinを試してみました。

dockerには8.0.18 imageはなかったのでcentos7にinstallして実験

先にまとめ

  • HASH JOINは等価条件のJOINでかつjoinするカラムにindexがない場合に採用される(ドキュメント1行目)
  • HASH JOINしたかどうかはEXPLAIN ANALYZEもしくはEXPLAIN FORMAT=TREE:で確認する
  • JOINアルゴリズムの選択をコスト計算で行っているかは不明

    • optimizer_traceみても単純に判断できそうな出力はない

install

yum localinstall -y …
[さらに読む]
MySQL 8.0 Functional Key Parts

MySQL8.0の機能を調べてまとめている。 Functional Key Partsについて読んだまとめ。

dev.mysql.com

MySQL 8.0.13から関数index(functional key parts)がサポートされる。
5.7以前ではカラムの値そのものかカラムのprefixでしかindexを作成することができなかったが、8.0.13からはテーブルに直接入っている値以外でもindexを作成することができるようになる。

  • マルチカラムインデックスでは関数インデックスと通常indexを混在して指定できる
  • ASC, DESC指定は関数インデックスでも可能
  • PKに指定できない
  • PKがない場合 …
[さらに読む]
17 件中 1 - 10 件を表示
次の 7 件 »