Creating Index with utf8mb4 on Mecab with 5.7.7RC
5.7.6 DMRではutf8mb4でのFTインデックスの作成が出来ませんでしたが、 5.7.7 RCで以下のバグ修正が行われたので、基本的なmecab設定をMySQL5.7.7RCにて確認。 今回のリリースで、5.7はRC(リリースキャンディデート)になったので、次のバージョンでGAになり色々な用途で使えるようになりそうです。 Changes in MySQL 5.7.7 (2015-04-08,...
View ArticleMySQL + jemalloc on Windows
需要が無いかもしれませんが、産まれて初めて、MySQL on Windows について触れます(起動したのも初めて)。 私自身はWindows上のMySQLを性能評価できる環境には無いのですが、 敢えてSQL ServerとWindowsという相手のホームグラウンドでアウェイ対決させよう、 という猛者のためにこのエントリを残します。...
View ArticleMySQL Enterprise Firewall基本機能
どのようなシステムにも完全が無いように、 Webサイトのセキュリティに気を付けてコーディングしたり、セキュリティ診断しながら運用しても、 どこかしら運用している中でセキュリティ対策漏れが出て来てしまう事が往々にしてあります。 また、それらのセキュリティ問題は、社内システムに関しても同様です。 個人情報を管理しているデータベースや企業秘密情報を管理するデータベースに関しては、...
View ArticleInnoDB General Tablespace
MySQL5.6ではinnodb_file_per_tableがDefaultでテーブル毎にテーブルスペース(ファイル)が作成されますが、MySQL5.7.6 DMRからは、CREATE TABLESPACEステートメントによって、 複数テーブルで共有出来るテーブルスペースが作成出来るようになりました。また、Defaultデータディレクトリーとは別のパスにテーブルスペースを作成出来るので、...
View ArticleオンラインでのInnoDB Buffer Pool Size変更
Resizing the InnoDB Buffer Pool Online MySQL5.7.5DMRからオンラインで、InnoDB Buffer Poolのサイズを変更出来るようになっています。他の商用データベースでも同じ機能があり、運用において数回程度実行した事がありますが、 正直利用する頻度はそれ程多く無いかと思いますが, “Nice to...
View ArticleSeparate UNDO tablespace and Innodb Temporary Tablespace
先日は、共通テーブルスペース(Generated Tablespace)の紹介をさせて頂いたので、 5.7でより細かく設定出来るようになった undo tablespaceとInnoDB temporary table tablespaceの設定 を紹介してみます。インスタンスの初期設定のタイミングで設定する必要がある為、...
View ArticleMySQL5.7におけるレプリケーションの改良
MySQL5.7にてレプリケーションに新たなオプションが加わったので、 ここで軽くご紹介させて頂きます。 今回は、以下の2点のみ検証してみました。 1. マルチスレッドスレーブ(同一スキーマ) – 全体的なパフォーマンス次第ですが、トランザクションを並列して実行可能。 レプリケーションのパフォーマンスが向上します。 2. 動的フィルタリング –...
View Articlemysqldiffでテーブル定義の違いをチェックする
レプリケーション環境でデータの不整合が発生するのはよくあることでしょう。pt-table-checksumやpt-table-syncを使ってそういった問題を解決する方法を解説した記事はたくさんあります。多くの場合、データの整合性には気を使うと思いますが、サポート窓口では、以下のような質問を受けることもよくあります。 サーバ間でテーブル定義が一致しているか調べる方法は?...
View ArticleMySQL 5.7.6以降では暗黙のテンポラリーテーブルがあふれると死ぬ
MySQL 5.7.6から、JOINした時とかに作る暗黙のテンポラリーテーブルでMemoryストレージエンジンで収まらなくなった時に固定化するテンポラリーテーブル(Created_tmp_disk_tablesがカウントアップされるアレ)のストレージエンジンがInnoDBになった。MySQL :: MySQL 5.7 Reference Manual :: 8.4.4 How MySQL Uses...
View ArticleMySQL 5.7.5から複数のユーザーレベルロック(get_lock関数のアレ)を取れるようになった
今まではmysql56 1> SELECT @@pseudo_thread_id;+--------------------+| @@pseudo_thread_id |+--------------------+| 3 |+--------------------+1 row in set (0.00 sec)mysql56 1>SELECT get_lock('yoku0825',...
View ArticleOnline ALTER TABLE Enhance Varchar Size
MySQL5.6でONLINE DDLが強化されて、テーブルの変更も多くのケースではオンラインで処理出来る為、深夜のメンテナンスが必須では無くなりました。 もちろんサーバーの負荷やユーザーの利用状況によっては、やはり深夜の時間帯でのメンテナンスが安心だというケースもまだあるとは思いますが、 オンラインでユーザーへのサービスを停止せずに、メンテナンスが出来るという選択肢は非常に重要だと思います。...
View ArticleMySQL 5.7 + Transactd スループット117万QPSを記録
ようやく24コアのマシンでTransactdのベンチマークを取ることができました。 Xeon E5-2697 V2 2.7GHz 24コア48スレッドの物理マシンです。32または36コアでできれば良かったのですが、お借りできたこのマシン*1でベンチマークを行いました。結果はタイトルの通りで、パフォーマンスの改善されたMySQL 5.7.7にて驚きの117万QPSを記録しました。...
View ArticleMyNA(日本MySQLユーザ会)会 2015年4月
4/22(水) に MyNA会が開催されたので久々に参加しました。 というか、私の東京出張に合わせて開催されたみたいなので強制参加です。 ちょっと前に話題になった「PlanetMySQL Voting: Vote UP / Vote DOWN
View ArticleMySQL 5.7.5からはmysql.sock.lockというのを作るようになった
A server could have its socket file taken over by a second server listening on different TCP/IP port but the same socket file. The socket file also would be unlinked by normal shutdown of the second...
View ArticleMySQL5.7の追加機能Generated Columns
MySQL5.7.7RCでは、列の値を定義によって自動生成可能なGenerated Columunsという機能が追加されています。 MS SQLやDB2でも同じような機能があって、頻度は多く無いですが、以前データベースの運用していた時にTAXの自動計算などで利用していました。 以下のブログには、XMLとの連携を行った例が書かれているので参考にしてみて頂ければと思います。 Generated...
View ArticleMySQL Enterprise FirewallとReplication連携
先日、ご紹介させて頂いた、MySQL Enterprise Firewallを利用する事により、 White ListベースのDBアクセス制御(ステートメントベース)をUserアカウントとSQLステートメントの 組み合わせで実装する事が出来ますが、Publicクラウドを含む環境でWebサイトを運用されている場合は、Replication機能と組み合わせてご利用される場合もあるかと思います。...
View ArticleMySQL Cluster 7.x Rolling Upgrade
MySQL Clusterの良いところの一つに、Rolling Upgradeが可能なので、 サービスを停止せずに、MySQL Clusterのアップグレードが可能な部分があると思います。 やはり、アップグレードにサービス停止を伴うと、インフラ管理者もサービス担当者と メンテナンス時間の調整をしなければならず、なかなか対応がが難しいと思います。 アップグレードには、MCM(MySQL Cluster...
View ArticleMySQL 5.6以降でクライアントに "Warning: Using a password on the command line...
MySQL 5.6以降では、同梱のクライアント(mysqlコマンドラインクライアント, mysqladmin, mysqldumpあたりがよくありそう)に-pオプションで直接パスワードを渡すと、$ mysql56 -utest -ptest -e "SELECT current_user()"Warning: Using a password on the command line...
View ArticleWork Tableによる処理 (temporary,memory tables)
特定のSQL処理で、GROUP BYなどの集合関数を利用していて、 “Using temporary”,”Using filesort”などが出て処理時間がかかり過ぎたり、 サブクエリーによる結果をJOINしてindexが利用出来無かったりと、 困難な場面に遭遇する事があるかと思います。 基本的には、物理的に変更しても良くて数倍だと思いますので、...
View ArticleMySQLインデックスの基礎 : ひとつのテーブルに対するクエリの最適化法
たとえ1つのテーブルだけに対して実行されるクエリでも、パフォーマンスが悪いというのはよくあることです。その理由は簡単で、インデックスの作り方がまずいため、実行計画がおかしくなってしまうのです。ここでは、1つのテーブルのみに対する色々なクエリを最適化するためのガイドラインを挙げてみたいと思います。 おことわり :...
View Article