1927 件中 391 - 400 件を表示
« 前の 10 件 | 次の 10 件 »
Displaying posts with tag: MySQL (reset)
utf8mb3なマスターに絵文字を突っ込んだ時にバイナリログってどうなるんだっけ

TL;DR

  • マスター上で、3バイトUTF-8なカラムとコネクションのcharsetの対応(いずれもsql_mode = ‘STRICT_TRANS_TABLES’ でない )
SET NAMES utf8 SET NAMES utf8mb4
utf8なカラム 絵文字から後ろが切れる 絵文字が ‘?’ になる
utf8mb4なカラム 絵文字が ‘????’ になる 絵文字が入る
  • マスターが3バイトutf8でスレーブが4バイトutf8(utf8mb4)の場合と↑の対応
ROW STATEMENT
マスターでは後ろが切れた
[さらに読む]
パーティションほとんどわからんので触ってみた

パーティショニングしたテーブルの確認方法

MySQL触ってて、実は仕事上では一度も触ったことがなかったパーティショニング。

(だって、色んな人が使えないって言ってたんだもん)

だけど、意外と世の中使ってる人は多いので今後のためにもパーティショニングしたテーブルの確認方法を色々見てみました。

まずはパーティションテーブル作る

ドキュメントからテーブルを拝借しました。

[さらに読む]
MySQL 8.0.13とそれ以降ではibtmp1は肥大化しない(あるいは、 /var/lib/mysql/#innodb_temp ディレクトリの正体)

TL;DR

  • MySQL :: MySQL 8.0 Reference Manual :: 15.6.3.5 Temporary Tablespaces
  • MySQL 8.0.13とそれ以降ではテンポラリーテーブルの実データ格納に「セッション単位のテンポラリーテーブルスペース」が使われるようになった
    • セッションが終われば領域が解放されるので、ibtmp1のように「mysqldを再起動しないとDisk Fullから復帰できない」ことがなくなった
    • この「セッション単位のテンポラリーテーブルスペース」の格納ディレクトリが datadir/#innodb_temp ディレクトリ

PoC

### ダミーデータを1000万行ほど
$ perl -MDigest::MD5 -E 'for (my $n= …
[さらに読む]
MySQL道普請123回のUPDATE前にロッキングリードの話を読んでの感想と実験(追試)の結果

 gihyo.jpの連載「MySQL道普請便り」の最新回(第123回)は、ロッキングリード(SELECT ~ FOR UPDATE)のつかいどころのお話が興味深かったです。

gihyo.jp


 乱暴に要約すると、例えば 5000枚のチケットを捌くUPDATEは、いきなり UPDATE するのではなくて、SELECT ~ FOR UPDATE でロックを取ってからUPADTEすると、同時実行数が大きくなっても遅くならないぞ、という内容です。人気のあるチケットの販売って、瞬時に大量の更新が走りますからね。 まさにチケットを捌くと、あっという間に砂漠みたいに何もなくなります。ひと仕事終えた人たちはデザートでもどうぞ。砂漠だけに。

[さらに読む]
information_schema.tables を定期的に貯めてASCIIグラフにしている

最近(でもないけど) information_schema.tables の中身を1日1回程度取得してMySQLに突っ込んでいる。

/*!80013 SET SESSION information_schema_stats_expiry = 0; */

SELECT
table_schema AS table_schema,
table_name AS table_name,
table_rows AS table_rows,
data_length AS data_length,
index_length AS index_length,
data_free AS data_free,
engine AS engine,
NOW() AS last_update
FROM
information_schema.tables
WHERE
table_schema NOT IN ('mysql', 'information_schema', 'performance_schema', 'sys') AND
table_type = 'BASE TABLE'
ORDER BY
data_length + index_length DESC;

CREATE TABLE `table_status_info` (
`seq` bigint unsigned NOT NULL AUTO_INCREMENT,
`ipaddr` varchar(15) NOT NULL,
`port` smallint unsigned NOT NULL, …
[さらに読む]
MySQL Diversを募集します

MySQLにより詳しくなるために、2週間に1回程度で少人数の勉強会を開催したいと思います。
なんとなくMySQL Diversと名付けてみました。
興味がある方は twitter:@tom__boにDMやメンションをお願いします。

目的

  • MySQLの内部を理解するためにソースコードを読んで、そこで得られた知見を共有・相談する
  • 他の …
[さらに読む]
yt-healthcheckが使っている、そのMySQLがマスターなのかスレーブなのかを判定する方法

Yoku-san no ToolKITyt-healthcheck はデフォルトでは「接続先のMySQLがマスターなのかスレーブなのか mikasafabricなのか 」によって監視項目を切り替える。

—role によって明示的に “master” なり “slave” なりを押し込むこともできるけれど、デフォルトは “auto” で、 yt-healthcheck 自身が勝手にマスターかスレーブかあるいは中間マスター(カスケード構成の2段目、子スレーブ(孫スレーブの親))かを判定する。

https://github.com/yoku0825/ytkit/blob/0.2.1/lib/Ytkit/HealthCheck.pm#L181-L207

判定ロジックはこんな感じ。 …

[さらに読む]
yt-rename-databaseでかつての RENAME DATABASE っぽいことをする

MySQLに RENAME DATABASE が存在していたのは 5.1.7から5.1.22の短い期間だけ(5.1のGAは5.1.30なのでその時にはもう消えていた)

にも拘わらず、かつての日本語版ドキュメントのカバー範囲が「5.1.15-betaまで」なため、俺と似たような時期に日本語ドキュメントを使って勉強していた人はよく知っているイメージ。

ちなみに無くなった理由は「色々考慮してないものが多すぎて色々壊れまくったから」だと思う(個人の見解です)

[さらに読む]
MySQL25年&MyNA(ユーザ会)20年記念イベントを開催しました

 わざわざ普段のMySQL勉強会で「10年前はこんなのでした」「15年前のバージョンでこんなのがあってね」なんて話をする奴は、いない。やっぱりみんな、最新バージョンでどうなったのか、どう使っているのか、という話をしたいし、聞きたい。だからこそ、振り返りをコンセプトとする周年イベントは、開催したかった。

 今年2020年は、 …

[さらに読む]
MySQL: CHAR(0)の動作が変わっていた

 11年ほど前に書いた日記がふと目にとまりました。CHAR(0)という列を定義できるというお話。
sakaik.hateblo.jp


 当時のバージョンが明記されていないため、よくわからないのですが、最新の 8.0.20では挙動が変わっているようです。

mysql> CREATE TABLE t1 ( a CHAR(0), b VARCHAR(0));
Query OK, 0 rows affected (0.01 sec)

mysql>  INSERT INTO t1 VALUES ("ABCDE", "FGHI");
ERROR 1406 (22001): Data too long for column 'a' at row 1

 ちゃんとエラーとして動作するようになりました!(というか勝手に切り捨てるのをやめただけとも言う)
当時の実行結果で、WARNING …

[さらに読む]
1927 件中 391 - 400 件を表示
« 前の 10 件 | 次の 10 件 »