![pixivにおけるMySQL運用の実際](https://cdn-ak-scissors.b.st-hatena.com/image/square/a2ae56c3bbfab9282baf52f8329bca0f61754f17/height=288;version=1;width=512/https%3A%2F%2Ffiles.speakerdeck.com%2Fpresentations%2Fc3462d2f08ef4a7b8604e7abc10dfd1a%2Fslide_0.jpg%3F9476198)
2018/01/26 第2回 オープンソースデータベース比較セミナー https://osscons-database.connpass.com/event/74688/Read less
MeltdownとかSpectreとか騒ぎがあったので、Amazon Aurora(MySQL互換)R4インスタンス再テスト(mysqlslap)MySQLAWSAurora 2018/01/13追記: 「AWSが再度パッチを当てたみたい」という情報があったので、3度目のベンチマークを行ったところ、db.r4.largeおよびdb.r4.xlargeについて、2017/10/末頃とほぼ同じ速度に戻ったことを確認しました。 「AWS、またパッチ当てたってよ」と聞いたので3度目のAurora(MySQL互換)R4テスト(mysqlslap) (以下、古い情報なので現在とは状況が異なります。) 以前、R4インスタンスが使えるようになったときにmysqlslapで性能テストをしたので、今回、同じ条件で再度R4インスタンスだけmysqlslapしてみました。 Amazon AuroraでR4インスタ
この記事は Mackerel プラグインアドベントカレンダー(全部CRE) の4日目です。 qiita.com soudai.hatenablog.com それでは4日目は mackerel-plugin-mysql です。 ここではMySQLの細かい説明は割愛します。 mackerel-plugin-mysqlはRDBMSとして広く使われているMySQL専用のプラグインです。 github.com インストールと設定手順 本プラグインはプラグイン集として提供しているパッケージの mackerel-agent-plugins に含まれています。 インストール先は /usr/bin/mackerel-plugin-mysql です。 mackerel-plugin-mysqlは様々な情報を可視化してくれますが、pluginが動作するクライアント側からMySQLに対してアクセス出来る必要があり
4月にMySQLの日本語コレーションについて語り合う場に呼ばれていろいろ話を聞いてきました。すぐにブログを書こうと思ったんですが、はや2ヶ月経過…。 ときどき、自分がMySQLの文字コードに関して発表する際に、次のようなスライドをいれてるんですが、 MySQL 8.0 でとうとう日本語コレーションが入ることになったのに、なんか期待してたのと違いました。 で、その辺の話を聞きました(2ヶ月も経ってるのでうろ覚え)。 Q. わざわざ日本語ロケール作るんだったら日本人が扱いやすいロケールにしてほしい utf8mb4_ja_0900_as_csはMySQLが独自に考えたものではない。Unicode規格に従っている。過去にいろいろ独自にやって失敗してきてるので、もう独自にやるのは避けたい。 ai(accent insensitive)で「ハ」=「パ」=「バ」になるのも、ci(case insensi
こんにちは、サービス開発部の荒引 (@a_bicky) です。 突然ですが、RDBMS の既存のテーブルを見てみたら「何でこんなにインデックスだらけなの?」みたいな経験はありませんか?不要なインデックスは容量を圧迫したり、挿入が遅くなったりと良いことがありません。 そんなわけで、今回はレコードを検索するために必要なインデックスの基礎知識と、よく見かける不適切なインデックスについて解説します。クックパッドでは Rails のデータベースとして主に MySQL 5.6、MySQL のストレージエンジンとして主に InnoDB を使っているので、MySQL 5.6 の InnoDB について解説します。 InnoDB のインデックスに関する基礎知識 インデックスの構造 (B+ 木) InnoDB では B+ 木が使われています。B+ 木は次のような特徴を持った木構造です。 次数を b とすると、
こんにちは。 2016新卒でLobiのサーバーサイドエンジニアをやっているmorikuniです。 今回は、mdqというGo製のツールを作ったので、その紹介をします。 mdqは複数のデータベースに並列にクエリを投げて、結果をJSONで出力してくれるというものです。 github.com mdqに近いコンセプトのツールとして、弊社の荒賀(@ken39arg)が作ったshard_promptがあります(#6「Shardingマジ怖い」tech.kayac.com Advent Calendar 2012)。 こちらはSQLを解析し、複数データベースにまたがる集約関数を一部サポートしていますが、MySQL専用かつ直列にクエリを投げるというものでした。 mdqでは複数データベースにまたがる集約関数はサポートしませんが、PostgreSQLなどMySQL以外のデータベースへのクエリや、並列処理による速
メリークリスマス!🎅🎄 このエントリはMySQL Casual Advent Calendar 2016の24日目です。 今日はこれの話です! @eagletmt 実装と実行計画依存です(たとえばInnoDBで単一カラムのインデックスが使われた場合のsort orderはprimary keyになるはずです)— Ryuta Kamizono (@kamipo) December 4, 2016 @eagletmt すいません、すこし間違いがありました。もし hoge_id = ? のような絞り込みで単一カラムのインデックスが採用された場合はsort orderはprimary keyになるはずです。InnoDB前提なら基本的に実行計画依存です。— Ryuta Kamizono (@kamipo) December 4, 2016 @eagletmt MySQLでorder by無しのと
EngineeringOrchestrator at GitHubGitHub uses MySQL to store its metadata: Issues, Pull Requests, comments, organizations, notifications and so forth. While git repository data does not need MySQL to exist and persist, GitHub's service… GitHub uses MySQL to store its metadata: Issues, Pull Requests, comments, organizations, notifications and so forth. While git repository data does not need MySQL t
mysql を含むものをテストする際に例えば go だと、lestrrat/go-test-mysqld とかを使います。 perl には Test::Docker::MySQL っていうのがあって、面白いなと思ったので、(雰囲気 go-test-mysqld インターフェースで)go で書いてみました。 github.com go で mysql の立ち上げを docker に寄せると、go-sql-driver/mysql が pure go なので簡単にバージョンの固定が出来て良いです。 最近は、開発にも docker を使っているので、アプリケーションのコードも docker な事が多いです。そうなると、docker run ... go test となるので、そのコンテナの中から mysql コンテナをさらに立ち上げる必要があります。 とりあえずって事で コンテナに docker
MySQLのデータディレクトリの初期化にはこれまで mysql_install_db が使われてきましたが、MySQL 5.7からは mysqld --initialize を使うことが推奨されています。 mysqld --initialize は datadir 配下にファイルやサブディレクトリがあるとエラー終了します。 # mysqld --initialize --user=mysql 2016-10-04T11:39:01.313174Z 0 [ERROR] --initialize specified but the data directory has files in it. Aborting. 2016-10-04T11:39:01.313222Z 0 [ERROR] Abortingなので datadir をスッカラカンにして再度実行してみます。my.cnf はこんな内容
レプリケーションはMySQLで最もよく使われる機能のひとつだ。レプリケーションは基本的に非同期でデータの複製を行う仕組みになっているのだが、非同期故にどうしても逃れられない問題がある。そのひとつが今回のテーマ、遅延である。というと、MySQLのレプリケーションはすぐに遅延が生じてしまうように感じてしまうかも知れないが、そのようなことはない。ほとんどの場合は即座にスレーブの更新が行われる。 なぜ遅延は発生するのか、どのように遅延が起きていることを調べるのか、どのように回避するのかということを本エントリでは解説したい。うまく遅延と付き合って、MySQLのレプリケーションをより快適に運用してもらえればと思う。 そもそも遅延とは何かMySQLのレプリケーションは非同期で行われる。これは準同期でも同じであり、スレーブにおいて更新が起きるのはマスターよりも一瞬遅れてしまう。これは非同期であるが故に逃れ
最近MySQLの勉強をしていました。実践ハイパフォーマンスMySQLを読むべきという話を聞いていたのですが、かなり網羅的に書かれていて、今の知識ではどれが重要なのかわからない状態でした。そこで色々調べてみて、参考になる記事をいくつか見つけたので、少しまとめてみようと思います。 今回まとめた記事を読んで、大体以下のことが理解できました。 インデックスの使われ方とその構造(MyISAMとInnoDB) EXPLAINの詳しい使い方、見方 InnoDBの特性 ALTER TABLEの特性 レプリ遅延 まず最初に Webエンジニアのための データベース技術[実践]入門 (Software Design plus)posted with amazlet at 12.06.02松信 嘉範 技術評論社 売り上げランキング: 9767 Amazon.co.jp で詳細を見る 松信さんの書いた「Webエンジ
4月11日から米サンタクララで行われた「MySQL Conference & Expo 2011」。このイベントでDeNAの松信嘉範(まつのぶよしのり)氏が、同社の大規模なMySQLの運用を支えている技術とツールについてのセッション「Automated, Non-Stop MySQL Operations and Failover」を行いました。 プレゼンテーションの中で、社内で利用しているフェイルオーバーの自動化ツールをオープンソース化することにも触れています(英語のドキュメントも作成中とのこと)。 MySQLの大規模運用における自動フェイルオーバーは、特にクラウドでのMySQLの利用が増えるにつれてニーズが高まる分野と思われます。セッションのスライドが公開されていますので、そのポイントを紹介していきます。 自動化されたノンストップなMySQLの運用 ソーシャルゲームでは高可用性が強く求
来年も作りたい!ふきのとう料理を満喫した 2024年春の記録 春は自炊が楽しい季節 1年の中で最も自炊が楽しい季節は春だと思う。スーパーの棚にやわらかな色合いの野菜が並ぶと自然とこころが弾む。 中でもときめくのは山菜だ。早いと2月下旬ごろから並び始めるそれは、タラの芽、ふきのとうと続き、桜の頃にはうるい、ウド、こ…
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く