Community journal

The latest from the MySQL community

Ideas, releases, practical guides, and perspectives from the people building with MySQL.

Follow the feed
Showing entries 571 to 580 of 3186 « Previous | Next »
Re: MyISAMで第2カラムのAUTO_INCREMENTを使ってるテーブルを洗い出すSQL

yoku0825 さんが、面白そうなブログを書いていました。 yoku0825.blogspot.com MySQLの auto_increment 列は キーカラムである必要がありますが、このキーは複合キーでも構わない。ただし 複合キーの場合は、InnoDB ではキー指定のうちの1つめのカラムである必要があり、MyISAMなら2つめ以降のカラムでも良い、という違いがあるそうです。 mysql> create table tt1 (c1 integer auto_increment, c2 integer, c3 integer, key(c2, c1, c3)) engine=innodb;…

PHP mysqli ドライバの max_persistent 設定の使い所がよくわからなかった件

TL;DR

  • PHP の mysqli.max_persistent で指定できるのは、HTTPワーカ プロセスあたり のコネクション数だった

    • 「全部で何個まで」っていう制限値じゃなかった

PHP mysqli.max_persistent 設定

Persistent Connections まわりのエントリーを先日書きました。

mita2db.hateblo.jp

@do_aki さんに、PHPの mysqli ドライバには以下のようなコネクション数をコン …

[さらに読む]
MyISAMで第2カラムのAUTO_INCREMENTを使ってるテーブルを洗い出すSQL

TL;DR

  • SELECT table_schema, table_name, column_name, seq_in_index FROM information_schema.statistics WHERE (table_schema, table_name, column_name) IN (SELECT table_schema, table_name, column_name FROM information_schema.columns WHERE extra LIKE '%auto_increment%') AND (table_schema, table_name, column_name) NOT IN (SELECT DISTINCT table_schema, table_name, column_name FROM information_schema.statistics WHERE seq_in_index = 1);
  • 無理にSQLでどうにかしなくても、mysqldump --no-data で引っこ抜いて sed 's/MyISAM/InnoDB/' してテキトーなところにリストアしてみればいいと思うよ

…

[さらに読む]
MySQL徹底入門第4版出版記念イベント on ニフクラエンジニアミートアップ

既報のとおり、7月上旬に『MySQL徹底入門第4版』が出版されました。ありがたいことに、出版記念のイベントを求める声もちらほらいただいていたのですが、主に私自身が MySQLユーザ会のイベントを多く主催したりしていることもあって、ユーザ会として自分たちの本の宣伝めいたものを開催するのは、やや気が引けるなぁと悩んでいました。折しも、ニフクラさんが定期的に開催している「ニフクラ エンジニア ミートアップ」としてやったらどうかとのお誘いをいただき、その中でやらせていただくことができました。#nifcloud_emup のみなさま、どうもありがとうございました。fujitsufjct.connpass…

MySQL Connection Pooling と Persistent Connections はチョット違うという話

コネクションプーリングのメリット

コネクションプーリングは、一度確率したコネクションを使い回す仕組みです。TCP 3-way ハンドシェイクやDBの新規接続処理をスキップすることで、パフォーマンスを向上させる効果があります。

ただ、私の経験ではコネクションプーリングは「しても、しなくてもどっちでも良い」ケースがほとんどでした。接続処理以外の部分が占める時間やリソースの方が圧倒的に多いケースがほとんどではないでしょうか。

一部、 …

[さらに読む]
MySQL 8.0.17とそれ以前では、CREATE USER .. DEFAULT ROLE ..構文を使うと、ロールの情報が正しくレプリケーションされない

TL;DR

  • mysql.role_edges テーブルと mysql.default_roles テーブルがマスターとスレーブでズレる
    • マスターでは登録されるけどスレーブでは登録されない
    • つまりスレーブでは「そのロールを使う権限もそのロールがデフォルトロールである情報も失われる」
  • See MySQL Bugs: #93252: Default role is not logged into the binary log
    • Fixed in 8.0.18

8.0.15を使ってレプリケーションを組んでいたらハマった。
バイナリログへの記録がそもそもおかしいことになる。

mysql> SELECT @@version;
+-----------+
| @@version |
+-----------+
| 8.0.17 |
+-----------+
1 row …
[さらに読む]
Update for last week (2020-07-20 ~ 2020-07-26)

Bugs

基本的にMySQL Server, 5.7以上のbug fixのみまとめます

  1. serverity >= S5(Performance)でupdatedでdesc sort、結果の今週分
  2. Status == ClosedでID#でdesc sort、結果の今週分を見る

Bug #100259 decimal returned function value overflow when group by

    …
[さらに読む]
今日は、MySQLの何これ演算子の日。

とある日

Twitterみてて、MySQLに変わった演算子があるというツイートを見た。

どのツイートか忘れたのだが・・・。

ってことで、面白うそうなので調べてみた。

変わってる演算子

変わった演算子ってのが、<=>です。

MySQLのドキュメントに普通に載ってた。

…

[さらに読む]
DEBUG_SYNCことはじめ

TL;DR

DEBUG_SYNCとは、デバッグビルドのmysqldの中だけでブレークポイントみたいなものを設定して、ブレークポイントに差し掛かったら他のコネクションを使って操作を試してみられる…と思ってもらえれば多分大丈夫。

ただし任意の箇所でブレークできるわけではなく、コードの中に埋め込まれた “synchronization points” の場所にだけ仕掛けられる。以下、わかりやすさ優先で ブレークポイント と呼ぶことにする。

基本的な使い方はこんな感じ。

  1. …
[さらに読む]
小ネタ/MySQL 8.0.21 で JSON_VALUE()

コロナ禍のあおりを受けて新機能が少なくなった MySQL 8.0.21 の新機能の 1 つ、JSON_VALUE()をちょっとだけ試します。

(まあ、本来ならマイナーバージョンで新機能の追加をすること自体が普通じゃないんですけどね。マイナーバージョンアップの都度新機能が加わる状況でも、Oracle さんは「メンテナンスリリース」と言い張っている謎。あ、これは dis りなどではなくて、お約束のネタです。)

JSON_VALUE()とは?

公式リファレンスマニュアルの説明にあるとおり、従来の

CAST() AS JSON_UNQUOTE() JSON_EXTRACT()

の組み合わせを 1 つの関数として、

JSON_VALUE(json_doc, path RETURNING type)

の形式で記述することができるようになったものです。

CAST() AS が不要な場合は、

…

[さらに読む]