41から始めました

文字通り41歳から始めたブログです。DB(MySQL)を使ってお仕事してるので、DB周りの話を中心に最近始めたこととかをTwitterのノリで書いています。なお、本サイトにおいて示されている見解は私個人の見解であり、所属団体や組織を代表するものではありません。

MySQL

テーブルに登録されている2点間の距離が知りたい ( ST_DISTANCE)

この日記は RDBMS GIS アドベントカレンダー2018の12日目向けに書きました。 ST_DISTANCE() spatial関数で2点間の距離を返す関数がST_DISTANCE()だというのは知っている。 ST_DISTANCE() ところが、公式ドキュメントからは実際に登録されているテーブルの値…

非公式なmysql-upgrade-checkerをMySQL5.5で試してみる

このエントリーは MySQL Casual Advent Calendar 2018 の5日目の記事です。 そもそもMySQL Upgrade Checkerって? 今まではリリースノートを読んで、つぶさに問題点を洗い出して、現行のDB環境に問題が無いかを人手にチェックしていました。 それをMySQL5.7…

SPACIAL関数で遊ぶ前の準備でハマったアレコレ

この日記は RDBMS GIS アドベントカレンダー2018の3日目向けに書きました。 はじめに アドベントカレンダーが作られてて、お話を聞いて面白そうだと思って少し触った経緯もあり、 あらためて最新のMySQL8.0.13で触りなおしてみた際、ハマったことについて書…

マニュアル読んで、REFERENCES権限いらねって外したら・・・

REFERENCES権限 https://dev.mysql.com/doc/refman/5.6/ja/privileges-provided.html 僕はこれを見てすっかり誤認していました。 REFERENCES 権限は現在使用されていません。 あー、過去にはあったけど使ってないのね。じゃあ、いらないよね→REVOKE。 と。 …

ユニークキーのパフォーマンス

先日に続き、mysql-casualから。 しかも今度は自分からの質問。 yoku0825さんが答えて下さったので、自分のほうで検証して確認してみようと。 その結果をここにアップしました。 1.ユニークキーって? UNIQUE 制約を使用して、主キーに関係しない特定の列…

MySQL8で廃止されたinformation_schemaのテーブル

大好きなクエリが流れなくて、アレ?と思ったのが始まり d.hatena.ne.jp のSH2さんの『ロック競合を表示するSQL』(以下参照) select t_b.trx_mysql_thread_id blocking_id, t_w.trx_mysql_thread_id requesting_id, p_b.HOST blocking_host, p_w.HOST reques…

テーブルやカラムのCollationは揃えよう

元ネタはMySQL Casualのslack この辺以降 それを見て、 そういや自分も2年前(DB移行時)にこれ調べたなー 社内メンバーに改めてちゃんと周知しよう なんか記事書くか という軽い備忘録的な感じ。 ちなみに、揃えないとどうなるか? slackにもあったように、 …

【小ネタ】group_cancatで文字列が途中で切れた時

mysqlにgroup_concatという便利な関数がある MySQL :: MySQL 5.6 リファレンスマニュアル :: 12.19.1 GROUP BY (集約) 関数 を見てもらうと分かるが、group by で取得できる値を1つのカラムに連結して表示できる。 資料作ったりするのによく使う。 関数の中…

すごくライトな話(MySQL Workbenchのインストール~DB登録まで)

MySQL Workbenchのインストール MySQL :: MySQL Workbench のリンクから 画面に入って「ダウンロードはこちら」ボタンを押して の画面に遷移するので、「Download」ボタンを押す 画面でID持ってたらログイン、 持ってなくて単にダウンロードしたいだけなら「…

パラメータ変更時の落とし穴

パラメータ確認時に落ちる 最近のMySQLはパラメータをオンラインで変更できるので、 SET GLOBAL パラメータ名=xxxx だとか SET パラメータ名=xxxx で変えている人も多いと思う。 でも、SHOW VARIABLES;で確認したときに変化が無くて、なんで変わらないんだ?…

JOINしてDELETEする (Error Code: 1064が出たとき)

今日もGIS関数の話は後回し・・・。 Error Code: 1064 以下のSQLを流したときに出たエラーです。 delete from 子テーブル A1 inner join 親テーブル A0 on A1.キーカラム = A0.キーカラム where 適当な条件 エラー文言は以下のような感じ Error Code: 1064. …

クエリの性能検証にmysqlslapはどうですか?

GIS関数について続きを書こうと思ってたけど、mysqlslapを使ったのでその使い方について軽くメモしとく。 mysqlslapとは mysqlslap は MySQL サーバーのクライアント負荷をエミュレートし、各段階のタイミングをレポートする診断プログラムです。 複数のクラ…

Club MySQL #4 ~周辺知識から理解するMySQL のGIS機能 聞いてきた と Workbenchで触ってみた

昨日これに行ってきました clubmysql.connpass.com 坂井さんによるGIS関数の話を聞けるということで、業務的にも地理データ少し使うんで、これが使えるともしかしたら面白いことできるかも?と思って行ってきました。 資料の内容についてはそちらを見てもら…

MySQLの全文検索インデックスでハマったこと(主にストップワードテーブル)

以下ハマったことを羅列 innodb_ft_enable_stopwordパラメータが、公式にはグローバルのみと書いてあるのに、グローバルをOFFにしてもパラメータがOFFにならない。 alter table spec_bukken_view Engine = InnoDB;を使えばインデックスの張り直しは不要だが…

perrorコマンドって知ってる?

昨日とあるイベントに参加して知ったコマンドperrorについて perrorとは? 公式(perror - エラーコードの説明)を参照 要するに、MySQLがエラーコードやエラー番号を出力するんだけど、そのエラーの意味がこのツールで分かりますというもの。 使い方 MySQL(ク…

【MySQL】良く使う調査コマンド・クエリ

順次追加していく予定 SHOWコマンド プロセス一覧 show processlist; MySQLパラメータ確認 SHOW VARIABLES [like 'パラメータ名']; パラメータ名に hostname と入れればホスト名が取得できるし、 buffer と入れるとメモリ関連、 dir と入れればディレクトリ…

【MySQL】ERROR 2013 (HY000)の解消

これ、なんのエラー? ERROR 2013 (HY000): Lost connection to MySQL server at 'reading initial communication packet', system error: 0 そもそもDBが立ち上がってないのなら全員これが出るだろうが、一部の接続だけがつながらないのであれば アクセス許…

FULLTEXT INDEXは一個ずつ作ろう(by MySQL5.7)

バージョン MySQL5.7.22 カラム追加の場合 ALTER TABLE table_A ADD COLUMN ft_column1 varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT 'フルテキストカラム1', ADD COLUMN ft_column2 varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NUL…

MySQL8.0でLOAD DATAする時の注意

必要なもの - FILE権限 - client に local-infile=1が必要 - mysqldにもlocal-infile=1が必要 三つ目のmysqldにもlocal-infile=1が必要がMySQL8.0での落とし穴 実は、MySQL5.7ではこいつがデフォルトONなのだが、8.0.2移行ではOFFになる。 デフォルトなもん…

【MySQL】インデックス作成時のカラム長制限について

Specified key was too long; max key length is 767 bytes インデックスを作る際に、型長×文字コードのサイズ >767 なカラムに作ろうとすると出る。 例えばこんな感じ CREATE TABLE `test` ( `COMMENT` varchar(192) NOT NULL DEFAULT '', KEY i_test_1 (`C…

MySQL8.0ではGRANT文でユーザを作らせない(代わりにロールがある)

MySQL5.7まではいけたGrant文でのCreate User MySQL5.5 Server version: 5.5.52 MySQL Community Server (GPL) ~ mysql> GRANT ALL ON nanigashi.* TO 'super_nanigashi'@'%' IDENTIFIED BY "super_nanigashi"; Query OK, 0 rows affected (0.01 sec) MySQL5…

char vs varchar

どっちがおススメなんだろう? 社内のテーブルで管理しているID値は36桁の固定長で構成される文字列にしているんだが、そのカラムの型がvarcharで、 charにした場合、領域小さくなったり、INDEX使用時の検索が早くなったりしないだろうか?と思い調査 現行の…

【MySQL】キャッシュウォームクエリ(InnoDB)の自動作成

そもそもキャッシュウォームとは? MySQLデータベースにはInnodb Buffer Pool(通称バッファプール) と呼ばれるメモリ上に確保された領域があります。 その領域にデータやインデックスがキャッシュされます。(対象はInnoDBテーブル) キャッシュはデータの初回…

インストールしたinnotopで接続時にエラー

最新のinnotopをインストール 環境はUbuntu16.04 $ sudo apt-get install mysql-client $ dpkg -S /usr/bin/innotop 非常に簡単。さあ、使おうと思ったら・・・。 $ innotop -u root -p -h host名 -P ポート番号 PROCESSLIST: Redundant argument in sprintf…