MySQL ストアドファンクションから文字コード指定を消してパフォーマンス改善

MySQLの5.7から8に移行中での出来事で、ストアドが2秒程度で結果が却ってたのが、20秒程度かかってしまうので、

先日行った OSC2019 Tokyo Fall でMySQLのブースにいた人に聞いてみて、直してみると、改善できました。

全角文字を扱わない場合、文字コードは指定しない方がいいです。

< Old >

| fc_chgdvessel | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` FUNCTION `fc_chgdvessel`(
`vslnm` varchar(50)
) RETURNS varchar(36) CHARSET utf8
COMMENT '船名記号スペース変換関数'
begin

return REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(vslnm, ' ', ''), '-', ''), '.', ''), '_', ''), '(', ''), ')', ''), '.', '');

end | utf8mb4 | utf8mb4_general_ci | utf8_general_ci |

< New >

| fc_chgdvessel | STRICT_TRANS_TABLES,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION | CREATE DEFINER=`root`@`localhost` FUNCTION `fc_chgdvessel`(
`vslnm` varchar(50)
) RETURNS varchar(36)
COMMENT '船名記号スペース変換関数'
begin

return REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(vslnm, ' ', ''), '-', ''), '.', ''), '_', ''), '(', ''), ')', ''), '.', '');

end | utf8mb4 | utf8mb4_general_ci | utf8_general_ci |

CentOS8 dnfでインストール出来ないパッケージ 2019-11

さくらのVPSでCentOS8がインストール出来るので、先月、インストールしてみました。

< インストールした主なパッケージ >

PHP7

MySQL8

LibreOffice

tiger-vncserver

postfix

inotify-tools

mailx

AdoptOpenJDK

Oracle OpenJDK

など

< まだdnfになく、rpmでインストール >

nkf

==> MySQLのCSV出力で必須

< 未インストール >

davfs2

==> 半分あきらめ、WebDavはマウントせず、都度、curlを使用中

swatch

==> logmonをgitからダウンロードして代替

geany

ssmtp

MATE Desktop