2375 件中 11 - 20 件を表示
« 前の 10 件 | 次の 10 件 »
MySQLと「令和」その2

MySQLでは異なる字が等しいと見なされることがあるということを書きました。

tmtms.hatenablog.com

この動きはMySQLが独自に変なことをしているわけではなく、Unicodeの規則に従っています。

MySQL 8.0 のデフォルトのCollationは Unicode 9.0.0Unicode Collation Algorithm(UCA) に従っています。

文字にはそれぞれ Weight という値が設定されていてソートに使用されています。この値が同じなら等しい文字とみなされます。

Collation

utf8mb4 のデフォルトの Collation は utf8mb4_0900_ai_ci

[さらに読む]
[便乗企画] 「SQL大量発行処理をいかにして高速化するか」for MySQL

ツイッターでこういうのがあったので、便乗してMySQLで考えてみるエントリ。

AP屋さんは読むべき。-- SQL大量発行処理をいかにして高速化するか #linux #oracle https://t.co/UkAMBc7KIB @SlideShareから

— ABE Masanori (@abe_masanori) 2019年4月4日


高速化手法として#1-#10の十個がリストアップされています。

#1 SQL発行数の削減 その?

[さらに読む]
MySQLと「令和」

新元号が「令和」に決まったことなので、MySQLでの扱いについての話を。

普通の文字

「令」も「和」もJIS第一水準に含まれている基本的な文字なので普通に日本語が使用できるcharsetで使用できます。

mysql> create table t (
  utf8mb4 varchar(255) charset utf8mb4,
  utf8mb3 varchar(255) charset utf8mb3,
  utf16 varchar(255) charset utf16,
  utf32 varchar(255) charset utf32,
  cp932 varchar(255) charset cp932,
  eucjpms varchar(255) charset eucjpms,
  sjis varchar(255) charset sjis,
  ujis varchar(255) charset ujis
);

mysql> insert into t values ('令和', '令和', '令和', '令和', '令和', '令和', '令和', '令和');

mysql> select * from t\G
*************************** 1. row ***************************
utf8mb4: 令和
utf8mb3: 令和
  utf16: 令和
  utf32: 令和
  cp932: 令和
eucjpms: 令和
   sjis: 令和
   ujis: 令和

mysql> select hex(utf8mb4), …
[さらに読む]
SHOW PROCESSLISTのHostがパーセントになるケース

プロシージャでDEFINERを指定して作成すると、Hostの覧が%になる。以下詳細。

まず、通常のケース。Id 37のセッションは正しく root が localhost から接続していると表示される。

mysql> SELECT CONNECTION_ID( );
+------------------+
| CONNECTION_ID( ) |
+------------------+
|               37 |
+------------------+
1 row in set (0.00 sec)

mysql> SHOW PROCESSLIST;
+----+-----------------+-----------+------+---------+--------+--------------------------+------------------+
| Id | User            | Host      | db   | Command | Time   | …

[さらに読む]
innotopにmy.cnfや.mylogin.cnfを食わせる方法

TL;DR

  • 何も設定しなくても食うけど、 [client] セクションしか読んでくれないので「読んでない」と思われることが多いっぽい
  • それ以外のセクションを食わせるためには ~/.innotop/innotop.conf に記述が必要だけど割と簡単だよ

innotop はPerl5製で DBD::mysql を使っているので、デフォルトファイルの読み込みは mysql_read_default_filemysql_read_default_group あたりに影響を受ける。 …と思って探してみれば割とさっくり見つかって、

[さらに読む]
そのvarchar型のカラムに入っている値が数字だけかどうかを確認する方法

TL;DR

  • なんか SELECT * FROM t1 WHERE CONCAT('',c1 * 1) != c1 であぶりだせるらしいけどなんで? と聞かれたのでその解説。
    • 俺は↑のやり方初めて聞いた。。
  • 個人的には WHERE c1 NOT RLIKE '^[0-9][0-9]*$' でいいんじゃない? と思う。

前提(?) 「数値しか入らないはずのカラムに文字列が入っていてバッチが転けてるので削除しました」
「?? カラムの型は?」
「varchar型です」
「ちょwww」 こんな状態

mysql57 8> SELECT num FROM t1;
+----------------------+
| num |
+----------------------+
| 1 |
| 2 |
| 3 |
| 4 |
| \(^o^)/オワタ |
| 0x12345 …
[さらに読む]
mysql コマンドを使ってシェルスクリプトを綺麗に書くコツ

mysql コマンドは -e で実行するSQLを指定できる。
セミコロンで区切れば複数のSQLを同時に実行することもできる。

$ mysql -e 'select 1; select 2'
+---+
| 1 |
+---+
| 1 |
+---+
+---+
| 2 |
+---+
| 2 |
+---+

-e を複数指定して、これでもいける。複数行に分けて書く時に自然。

$ mysql -e 'select 1;' \
>       -e 'select 2'

-e で指定した文字列を単に結合して実行しているようで、セミコロンをなくしてしまうと文法エラーになる。

$ mysql -e 'select 1 ' \
>       -e 'select 2'
ERROR 1064 (42000) at line 1: You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for

[さらに読む]
ストレージエンジンをインストールしている環境でのリストアではまりがちなこと

TL;DR

  • plugin_dir に必要な .so ファイルを置いておくのは大前提
  • mysqldump から戻す時は、戻す前に自分で INSTALL PLUGIN
  • 物理バックアップから戻すときは基本的にそのまま戻して起動すればおk

周囲1mくらいで2回聞かれたのでメモしておく。
対象は ストレージエンジンプラグイン (デーモンプラグインである innodb_memcached とか mysqlx は対象外)かつサーバーデフォルトで有効になって いない もの( InnoDB, MyISAM などは対象外)、つまりだいたい Mroonga, TokuDB, RocksDB あたりをターゲットとして見ている。 …

[さらに読む]
gh-ostを中断させたらどうなるのかの試み

gh-ost 3日目。 gh-ostを中断させたらどうなるのか確認してみる。 pt-osc はデフォルトでは中断する時に

  • テンポラリーテーブル(gh-ost的には「ゴーストテーブル」) が残存する
  • テンポラリーテーブルに対するトリガーも残存する

な訳だがgh-ostはいかがなものか。 取り敢えず Ctrl + Cで終了させてみる

$ gh-ost --database=mysqlslap --table=t1 --alter="ADD KEY (intcol1)" --host=127.0.0.1 --port=21800 --user=msandbox --password=msandbox --allow-on-master --execute
..
^C
  • *_ghc*_gho なテーブルが残った
master [localhost] {msandbox} (mysqlslap) …
[さらに読む]
プログラマのためのSQL第四版読書会(37) 38.5 その他の時間関数:君のDOW(だう)はどう?

本日は以下の勉強会でした。

プログラマのためのSQL 読書会(37)

38.5 その他の時間関数(Other Temporal Functions)で、DOW(Day Of Week)という曜日を数値で返す関数の説明があり、
とりあえず翻訳でSQL Anywhereから差し替えられた[PostgreSQL]の説明が間違っているのと、各データベースの違いが顕著だったので、ここにまとめておきます。

[誤] 2〜8の値を返し、8が日曜日である。
[正] 0〜6の値を返し、0が日曜日である。

なんかぜんぜんちがうね。。。。

なお、数値が日曜日スタートか、月曜日スタートか、数値のはじまりが0か1かですげー混乱すると思うんですが。。。。

[さらに読む]
2375 件中 11 - 20 件を表示
« 前の 10 件 | 次の 10 件 »