タグ

mysqlに関するhidemailのブックマーク (116)

  • MySQLのencodingをutf8からutf8mb4に変更して寿司ビール問題に対応する|TechRacho by BPS株式会社

    ⚓ utf8の4バイト文字問題は突然に こんにちは、hachi8833です。 MySQLのデータベースでencoding=utf8が指定されていると、UTF-8の文字長が4バイトの文字をデータベースに保存できなくなる、いわゆるUTF-8の4バイト文字問題、またの名を「寿司ビール問題」が発生することがあります(「MySQLのutf8の4バイト文字問題とは」で後述)。 BPSWebチーム部長のmorimorihoge さんがこの問題に対応したときの手順をメモします。 ⚓ utf8からutf8mb4に移行する手順 MySQLのストレージエンジンはInnoDBが前提です。utf8mb4を指定するにはMySQLのバージョンが5.5以上である必要があります。 ⚓ 1. 以下のコマンドでdumpを取る mysqldump --no-create-info --ignore-table=mydata_st

    MySQLのencodingをutf8からutf8mb4に変更して寿司ビール問題に対応する|TechRacho by BPS株式会社
  • MySQL 8.0.18 の実装を読み解きながら簡単なストレージエンジンを自作する - それが僕には楽しかったんです。

    はじめに MySQL をビルドする ストレージエンジンを自作する Example エンジンをベースにする handlerton の作成とインスタンス化 テーブルを作成する 余談・気になったところ テーブルを開く INSERT の実装 ha_tina の存在 テーブルスキャン store_lock の実装 external_lock の実装 rnd_init の実装 info の実装 extra の実装 rnd_next の実装 おわりに はじめに 卒論書くのに飽きてきて何かやりたくなったので急にストレージエンジンを書くことにしてみた。 MySQL のストレージエンジンを実装していく中で、色々できるかなと思っていたけど、やってみると MySQL の内部実装について色々知らないといけないことが多くインデックスとかトランザクションとかそういうところは実装できなかった。 github.com My

    MySQL 8.0.18 の実装を読み解きながら簡単なストレージエンジンを自作する - それが僕には楽しかったんです。
  • MySQLでJSON型を使う(論理設計編) | スマートスタイル TECH BLOG

    MySQLではバージョン 5.7.8 以降でJSON型がサポートされるようになりました。 このシリーズでは基編、パフォーマンス編、論理設計編と、JSON型のデータ操作方法やどのような場合に使用を検討するべきかをベンチマーク結果も踏まえて探っていきたいと思います。 MySQLでJSON型を使う(基編) MySQLでJSON型を使う(パフォーマンス編) MySQLでJSON型を使う(論理設計編) 今回はJSON型をどういった場合に利用するかを考える論理設計編です。 データベース論理設計のアンチパターン データベースの論理設計で避けるべき事柄をまとめた以下のがあります。 [amazonjs asin=”4873115892″ locale=”JP” title=”SQLアンチパターン”] この中でいくつかのアンチパターンはJSON型を使うことでも解決できそうです。 マルチカラムアトリビュー

    MySQLでJSON型を使う(論理設計編) | スマートスタイル TECH BLOG
  • mysqldump実行時に必要な権限 – OpenGroove

    mysqldumpの実行ユーザに与える権限として、何を指定すればいいだろう。 あっさり調べた限り、以下となるようだ。 ・FILE(Global権限) ・SELECT,SHOW VIEW,LOCK TABLES(DB権限) 加えてバイナリログログをフラッシュするには、RELOAD権限が必要。 実行ユーザにはすべてのデータベースをダンプさせて、バイナリログもフラッシュさせる という前提であれば、以下にようにすればいい、かな。アクセス元のホスト指定にも注意。 mysql > GRANT RELOAD,FILE,SELECT,SHOW,VIEW,LOCK TABLES ON *. * TO ‘user001’@192.168.0.10’ IDENTIFIED BY ‘userpassword’;

  • Ubunt 16.04でMariaDBをインストールするとパスワードが変 | 純規の暇人趣味ブログ

    発表されて1ヶ月経っていないUbuntu 16.04、私は早くもアップグレード予定を立てて作業を行っています。 さっそく流行物を使ってみようと色々試しているのですが当然ながらハマりまくりです、今回はその中でも特にハマったMariaDBのパスワードの不具合と解決策をご紹介しましょう。 MariaDBのパスワードが変 多分この記事をご覧の方であれば既にこの問題に当たっている方でしょうが、一応説明しましょう。 Ubuntu 16.04にてMariaDBをインストールするべく「sudo apt-get install mariadb-server」を実行するのですが、インストール中にパスワードを求める画面が出ない、訳も分からず「mysql -u root」でログインしようとしてもエラー、「sudo mysql -u root」だとログイン出来ると言う意味不明な状況です。 test@ubuntu:~

    Ubunt 16.04でMariaDBをインストールするとパスワードが変 | 純規の暇人趣味ブログ
  • 長年の議論に終止符 -- MySQLとMariaDBの違い一覧 - 技術メモ置き場

    (2014.12.3追記:このblogの内容は、以下の書籍にも反映させた。) SQLレベルの差異 MariaDB5.5とMySQL5.5ではSQLレベルでの違いはほとんどなかった。autoincrementの最大値の扱いくらい。 ただし、MariaDB10.0でREGEXPがマルチバイト対応になったので、アプリ側は注意。 項目 MySQL MariaDB Autoincrement 最大値に達すると、以降は最大値を繰り返す。Warningのみ。エラーにならない。tinyintなら…,125,126,127,127,127… 最大値-1まで。以降はエラーを返す。tinyintなら…,125,126,ERROR,ERROR,… EXPLAIN文 JSON形式 バージョン5.6から 未対応 Optimizer Trace バージョン5.6から 未対応(ただし、MariaDBのほうがオプティマイザ

    長年の議論に終止符 -- MySQLとMariaDBの違い一覧 - 技術メモ置き場
  • InnoDBの監視 ~ mackerel-plugin-mysqlを読み解く その2 - そーだいなるらくがき帳

    この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の20日目です。 qiita.com soudai.hatenablog.com それでは20日目は mackerel-plugin-mysql 第二弾、InnoDBの監視です。 mackerel-plugin-mysqlRDBMSとして広く使われているMySQL専用のプラグインです。 第一弾はこちら。 soudai.hatenablog.com インストール方法や使い方、MySQLのデータ取得で使っているSQLは前回説明したので割愛します。 前回はMySQL全般に言える監視の内容でした。 今回はその中でもInnoDBに特化した内容でお送りします。 見れるメトリック それでは各グラフ定義ごとに説明します。 また表に出てくるdiffとはプラグイン上で差分値計算をするかどうかです。 ◯ となっている項目はプラグインで

    InnoDBの監視 ~ mackerel-plugin-mysqlを読み解く その2 - そーだいなるらくがき帳
  • MySQLの監視 ~ mackerel-plugin-mysqlを読み解く - そーだいなるらくがき帳

    この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の4日目です。 qiita.com soudai.hatenablog.com それでは4日目は mackerel-plugin-mysql です。 ここではMySQLの細かい説明は割愛します。 mackerel-plugin-mysqlRDBMSとして広く使われているMySQL専用のプラグインです。 github.com インストールと設定手順 プラグインはプラグイン集として提供しているパッケージの mackerel-agent-plugins に含まれています。 インストール先は /usr/bin/mackerel-plugin-mysql です。 mackerel-plugin-mysqlは様々な情報を可視化してくれますが、pluginが動作するクライアント側からMySQLに対してアクセス出来る必要があり

    MySQLの監視 ~ mackerel-plugin-mysqlを読み解く - そーだいなるらくがき帳
  • MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | ソーシャルゲーム基盤 運用側から見渡す解像度

    – SOPHISTICATED DevOps ,NOT ’THAT’ DevOoops – 運用、開発、サービス提供顧客、エンドユーザー、全てが幸せなシステムの追求。その実現の為には?を運用管理側から押さえておきたい技術的な事、人的な事、モノ的な事や備忘録的な事を発信してまいります。 SHOW PROCESSLISTによくいる COPYING TO TMP TABLE ここから解像度を高めていきたいとおもいます。 ・temporary table (「一時テーブル」と言います。) ・tmp file(「テンポラリファイル」と言います。) 似た名前の両者ですが、どういう意味で何を指しているのでしょうか? 私もとても紛らわしいのでおさらいしておこうと思います。 「Copying to tmp table」と「copy to tmp table」の件は、 後半に記載しています。 ■ 値と定義の確

    MySQLの「temporary table (一時テーブル)」 と「tmp file(テンポラリファイル)」の違いと「Copying to tmp table」と「copy to tmp table」の違い | ソーシャルゲーム基盤 運用側から見渡す解像度
  • Using filesort

    去年ソートに関する記事を書いたが、今日はその続きである。 MySQLでEXPLAIN SELECT...を実行するとExtraフィールドでよく見かける「Using filesort」という文字列。Filesortって一体なんだろう?と思ったことはないだろうか。単刀直入に言ってFilesortの正体はクイックソートである。 クエリにORDER BYが含まれる場合、MySQLはある程度の大きさまでは全てメモリ内でクイックソートを処理する。ある程度の大きさとはsort_buffer_sizeであり、これはセッションごとに変更可能である。ソートに必要なメモリがsort_buffer_sizeより大きくなると、テンポラリファイル(テンポラリテーブルではない)が作成され、メモリとファイルを併用してクイックソートが実行される。 Filesortは全てのソート処理において実行されるわけではない。前回の記事

    Using filesort
  • MySQLのチューニングを戦う方へ

    連載もついに最終回となりました。 連載では、MySQLクエリーチューニングことはじめで予告した通り、「チューニング箇所の洗い出しのテクニック」について説明してきましたが、「チューニングの方法」については一切触れませんでした。 「連載ではチューニングそのものの方法については詳しく説明しません。それは見出しの通り「銀の弾丸」などはなく、MySQLのパフォーマンスチューニングは計測と改善を繰り返し行っていくべきものだからです。そのため、特定のケースにマッチする改善の手法よりも、繰り返し使われる計測の手法にフォーカスを当てて説明していきます。」 その理由としてこの一文が全てではありますが、今回は参考までに筆者が考えるチューニングの指標を紹介したいと思います。それがあなたの環境に当てはまるかどうかは、これまでに紹介してきたツールなどを利用して計測してみてください。 チューニングの基方針 基

    MySQLのチューニングを戦う方へ
  • MySQL 8.0登場!立ち止まることを知らない進化はこれからも続く。

    ゴールデンウィークはいかがお過ごしされただろうか。今年は天気も良く、行楽日和が続いたように思う。 さて、先日MySQL 8.0が正式にリリースされた。少し時間が経ってしまったが、今回はMySQL 8.0の新機能について紹介したい。コミュニティ版のダウンロードはこちらから可能だ。 ひとつ前の正式バージョンはMySQL 5.7だったのだが、MySQL 8.0は非常に大きなリファクタリングが含まれており、5.x台のバージョン番号を捨て去ろうという話があった。そこで、次のメジャーバージョンは最初の桁を増やすということになったのだが、MySQL 6.0は過去に既に存在し、買収などの騒ぎで開発が頓挫してしまった経緯がある。7.xはMySQL NDB Clusterと被っている。というわけで、5.7の7の部分の次という意味合いもあって、8.0というバージョン番号を引っさげ、満を持しての登場となった。その

    MySQL 8.0登場!立ち止まることを知らない進化はこれからも続く。
  • なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策 『SQLパフォーマンス詳解』の翻訳者の松浦隼人さんに、8つの「SQLが重たくなる原因とその対策」を聞きました。システムのボトルネックになるような「問題のあるSQL」を回避するノウハウを学びましょう。 データの操作や定義をする言語「SQL」は、どのような領域を担うエンジニアにとっても必修科目です。しかし、その仕様をきちんと理解し、パフォーマンスに優れたSQLを書ける方はそれほど多くありません。問題のあるSQLを書いてしまい、知らぬ間にそれがシステムのボトルネックになってしまう事態はよく発生します。 では、どうすればそうした事態を回避できるのでしょうか? そのノウハウを学ぶため、今回は『SQLパフォーマンス詳解』の翻訳者であり、自身もエンジニアでもある松浦隼人(まつうら・はやと/@dblmkt)さんに8つ

    なぜ、SQLは重たくなるのか?──『SQLパフォーマンス詳解』の翻訳者が教える原因と対策|ハイクラス転職・求人情報サイト AMBI(アンビ)
  • 【Mac】HomebrewでMySQLのインストールと起動スクリプトの設定 - TASK NOTES

    HomebrewでMySQLをインストールする際の手順と起動スクリプトの設定についてです。 事前準備 Homebrewのインストールが必要です。 Homebrewのインストールと設定 - TASK NOTES MySQLのインストール インストールコマンドを実行します。最新版を入れたい場合は先にbrew updateを実行して下さい。 $ brew install mysql ==> Downloading https://downloads.sf.net/project/machomebrew/Bottles/mysql-5.6.22.yosemite.bottle.tar.gz ######################################################################## 100.0% ==> Pouring mysql-5.6.22.

    【Mac】HomebrewでMySQLのインストールと起動スクリプトの設定 - TASK NOTES
  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • MySQL Connector/J (JDBC ドライバ)の罠まとめ - ~saiya/hatenablog

    MySQL JDBC ドライバ(MySQL Connector/J)、JavaMySQL といえばまずコレだが、これまた地味に罠が多い(そして多くの人が踏んで苦しむ)のでまとめてみた。 (2015/03/19) こちら のコメント欄でご指摘ただいた wait_timeout の件について記事修正いたしました。 Summary 以下、いずれもプログラム設計時に理解しておかないと、開発中は大丈夫そうでも実用した途端に苦しまされれてしかも設計から治す羽目になる要注意な罠である: SELECT 結果は全部メモリに載ってしまう (デフォルト設定で) 大量 SELECT する場合は FetchSize, ResultSetType を要設定 利用時には制約があるので、設計段階から考慮しなければならない (後述) idle 時間の「合計で」コネクションが切られる 前回のクエリ処理から一定時間以上経

    MySQL Connector/J (JDBC ドライバ)の罠まとめ - ~saiya/hatenablog
  • Zabbix 3-11. MySQL 監視テンプレートの設定

    データベース管理システムの MySQL が正常に起動していることを監視するためのテンプレートを作成します。LAMP環境で構築されているWEBサイトの MySQLデータベースには、一般的にユーザ情報やブログ記事などが保存されていますので、MySQL が起動していないとWEBサイトを表示することができません。MySQL の死活監視は3306番ポートにTCP接続ができることにより確認します。また、MySQL への同時接続数(スレッド数)と、データベースからの読み出しに時間がかかったスロークエリ数の監視設定も行います。 MySQL のスレッド数やスロークエリ数は mysqladmin コマンドで確認できます。Zabbixからの監視もこの mysqladmin コマンドの出力結果をユーザーパラメータという仕組みを使って取得します。 $ mysqladmin status -u root -p Ent

    Zabbix 3-11. MySQL 監視テンプレートの設定
  • MySQLの日本語コレーション - tmtms のメモ

    4月にMySQLの日語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、 MySQL 8.0 でとうとう日語コレーションが入ることになったのに、なんか期待してたのと違いました。 で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。 Q. わざわざ日語ロケール作るんだったら日人が扱いやすいロケールにしてほしい utf8mb4_ja_0900_as_csはMySQLが独自に考えたものではない。Unicode規格に従っている。過去にいろいろ独自にやって失敗してきてるので、もう独自にやるのは避けたい。 ai(accent insensitive)で「ハ」=「パ」=「バ」になるのも、ci(case insensi

    MySQLの日本語コレーション - tmtms のメモ
  • MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ

    こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、

    MySQL with InnoDB のインデックスの基礎知識とありがちな間違い - クックパッド開発者ブログ
  • gh-ost:GitHubのMySQL向けオンライン・スキーマ・マイグレーションツール | POSTD

    日、 gh-ost のオープンソース・リリースを発表します。GitHubの、トリガーレスなMySQL向けオンライン・スキーマ・マイグレーション・ツールです。 gh-ost は、MySQLテーブルの修正が必要な、進行中の継続的なプロダクション変更に伴って私たちが直面する問題に答えるために、ここ数ヶ月で開発されました。 gh-ost は、負担が小さく、制御しやすく、監査しやすく、操作が簡単なソリューションを提供することによって、現在のオンライン・テーブル・マイグレーションのパラダイムを様変わりさせます。 MySQLテーブルのマイグレーションは、よく知られた問題で、2009年からはオンライン・スキーマ変更ツールによって対処されてきました。ハイペースで成長するプロダクトに伴って、データベース構造の変更が必要になります。列やインデックスなどの追加・変更・削除は、デフォルトのMySQLの動作を妨げる

    gh-ost:GitHubのMySQL向けオンライン・スキーマ・マイグレーションツール | POSTD