2. ● まつうです ○ hatena tmatsuu ○ twitter matsuu ○ 32歳ぐらい ● インフラエンジニアだけど元プログラマ ○ SQL好きです ○ PostgreSQL派(だけど仕事はMySQLをよく使う) ○ 仕事でチューニングやることもある ● 今日は懇親会のみ参加です ○ 勉強会の内容とかぶってたらごめんなさい ● じぇじぇとか言ってるけど朝ドラ見てない ○ じぇじぇはNHKの朝ドラ「あまちゃん」のネタです 自己紹介?じぇじぇ!
MySQLのインデックスを効果的に使うにはどうしたらいいのかについての分かりやすい解説。そもそもインデックスの役割はとは何か、そしてどうすればその役割を果たしてくれるのかを説明する。 たとえ1つのテーブルだけに対して実行されるクエリでも、パフォーマンスが悪いというのはよくあることです。その理由は簡単で、インデックスの作り方がまずいため、実行計画がおかしくなってしまうのです。ここでは、1つのテーブルのみに対する色々なクエリを最適化するためのガイドラインを挙げてみたいと思います。 おことわり : あらゆる状況をカバーしようとはせず、一般的なガイドラインを提示するに留めるつもりです。ここで挙げたものがうまく適用できない例を簡単に見つけることができるのは間違いないでしょうが、ほとんどの場合はここに書いたことが十分なのも事実です。また、MySQL 5.6以上にあるIndex Condition Pu
Webサービスを開発/運用してるモンとしては、いろんなWebサービスを触ってみなきゃアカンってことで、アメリカの若モンに大人気ってふれこみのsnapchatに登録してみた。これでリア充の仲間入りやと思ったが、snapchat友達が同僚二人しかいないうえに、利用シーンがあまり思い浮かばないww オジサン困っちゃいました。画像とか送信できるんだけど、数秒で消えるの。むしろそこがウリっていうね。どうやって遊ぼうか…。 2月はブログ書かなかったなーと思ったのでMySQL小ネタ。世間的にも自分的にも真新しくもなんともないTipsです。 innotopで集計 実は以前、Qiitaに書いたので↓をば。。。 http://qiita.com/la_luna_azul/items/505ca441b8c8e6a87aaa 流れるクエリ、ロックの状況、トランザクション(show engine innodb s
通常は my.cnf に以下の設定をして restart すればいいのですが、稼働中のサービスの場合、再起動したくないこともあります。 slow_query_log=1 long_query_time=3 そういうときは、set global すれば動的に有効にできます。 mysql> set global slow_query_log=1; mysql> set global long_query_time=3; が、なぜか long_query_time の値が反映されません。デフォルトの 10秒のままです。 mysql> show variables like 'slow_query%'; +---------------------+-------------------------------------------+ | Variable_name | Value | +---
ちょっとキャッチ−なタイトルをつけてしまったが、今日は独断と偏見でMySQLを高速化する方法を10個紹介しよう。MySQLサーバをチューニングするときや初期導入する場合などに参考にしてもらいたい。 1. バッファを増やす、または減らす チューニングの基本中の基本であるが、適切なバッファサイズを設定することはパフォーマンスチューニングの要である。主なバッファは次の通り。 innodb_buffer_pool_size・・・InnoDBだけを利用する場合は空きメモリの7〜8割程度を割り当てる最も重要なバッファである。余談だが、実際にはここで割り当てた値の5〜10%ぐらいを多めにメモリを使うので注意が必要だ。 key_buffer_size・・・MyISAMだけを利用する場合は、空きメモリの3割程度を割り当てるといい。残りはファイルシステムのキャッシュ用に残しておこう。 sort_buffer_
まず前提となる環境はこんな感じです。 コード内というのは、例えばイベント用のページを作った時、指定の日時まではアクセス出来ないようにする用な事を、まぁコードにハードコードする際に、OSがUTCだとしても日本時間で書きたいという事。 # Set Time.zone default to the specified zone and make Active Record auto-convert to this zone. # Run "rake -D time" for a list of tasks for finding time zone names. Default is UTC. config.time_zone = 'Tokyo' rails_project_dir/config/application.rb デフォルトから上記だけ設定を変更する。 Timeは使わずにActiv
最近ブログが勉強会参加レポートばかりになっている感がありますが、今日(4/22)は MyNA (日本MySQLユーザ会) に行ってきました。 ここのところ話題になっていた '🍣' = '🍺' 問題や、パフォーマンス・チューニング Tips, MySQL 5.7 の性能 / 新機能と、盛り沢山の話が聞けて、大変勉強になりました。 当日の Tweet が togetter にまとめられています。 発表内容と照らし合わせて見ると、参考になる情報もあるかもしれません。 以下、発表内容のノートになります。 資料はまだネット上に上がっていないものもあるようですが、捕捉したらこちらの記事も更新します。 (愚直にメモを取っていたので、かなりの分量になりました ^^; ) 🍣=🍺 とみたまさひろさん = from Masahiro Tomita 自己紹介 日本MySQLユーザ会代表 MySQL的
インフラストラクチャー部の菅原(@sgwr_dts)です。 インフラストラクチャー部のメンバーはオペレーションのため強力な権限のMySQLアカウントを使用していますが、サービス開発をするエンジニアも業務のためにサービスのDBの参照・更新権限を持ったアカウントが必要になることがあります。 セキュリティやオペレーションミスのことを考えると、すべてのエンジニアのアカウントをスーパーユーザーにするわけにはいかないため、都度適切な権限を付与していますが、手動での作業は地味に手間がかかります。 そこでクックパッドではMySQLのアカウント情報をコード化し、リポジトリで管理するようにしています。 gratanによるコード化 MySQLのアカウント管理はgratanという自作のツールを使って行っています。 gratanを使うとMySQLのアカウントをRubyのDSLで記述することができるようになります。
5時間モノの alter table が Lost connection to MySQL server during query したんだけど show processlist するとまだ動いてるっぽいから放置しとけば完遂するのかなと思ってるんだけど大丈夫だろうか、、、 2015-03-30 16:47:05 via Twitter for iPhone とりあえず show processlist してまだ動いてるっぽかったら、datadir 配下で #sql-xxxx_xxxxx.ibd な名前のファイルが育っているかどうか確認する。 タイムスタンプが更新されていればテンポラリテーブルへのデータコピーが生きてるということになるので、あとは show processlist を監視して終わるのを待てば良い。 で、終わったっぽかったら show create table を確認して変更が
さらば、愛しき論理削除。MySQLで大福帳型データベースを実現するツール「daifuku」を作ってみた 先のエントリ「論理削除はなぜ「筋が悪い」か」で書いたとおり、データベースに対して行われた操作を記録し、必要に応じて参照したり取り消したりしたいという要求は至極妥当なものですが、多くのRDBは、そのために簡単に使える仕組みを提供していません。 daifukuは、RDBに対して加えられた変更をトランザクション単位でRDB内にJSONとして記録するためのストアドやトリガを生成するコマンドです。 % daifuku dbname tbl1 tbl2 > setup.sql のように実行すると、指定されたテーブル(ここではtbl1とtbl2)にセットすべきトリガや、更新ログを記録するためのテーブル「daifuku_log」を生成するCREATE TABLEステートメントなど、必要なSQL文をset
どうも、プラットフォームDivでエンジニアをやっている Wataru です。 最近3人目の子供が産まれて、産後自宅勤務をさせてくれた弊社はとてもいい会社だと思います。出産予定のあるエンジニアのかたは是非弊社に転職を。 さて、今回はRedisの紹介をさせて頂きたいと思います。 Redisってすごくマイナーなわけではないのですが、めちゃくちゃ便利なのにあまり注目されていないなーという印象があるので、これを機会に是非使ってみてもらえると嬉しいです。 Redisって何?Redisとは「remote dictionary server」から名前が付けられたオープンソースのkey-valueデータストアです。 MemcacheDB等のKVSとの最大の違いは、格納するバリューがデータ構造というところです。 つまり、リスト・セット・ハッシュなどのデータ構造で格納できるのでバリューに対してアトミックな操作が
5. 2006年 2006.8 Peter Zaitsev、Vadim Tkachenko が MySQL AB(High Performance Group)離籍して Percona 設立 ※当時、S商情報システムのS原さんがMySQLの性能の将来を危惧していた。 ※S原さんは日本に有力なハッカーが居ないことも当時危惧していたと思う。 (世界のMySQLコミュニティにおける日本ユーザーのプレゼンスが低くなってしまうから) 多少影響を受けた。 2006.8 Bug#15815: Very poor performance with multiple queries running concurrently (http://www.mysqlperformanceblog.com/2006/07/28/returning-to-innodb-scalability/) の議論に参加 ※これが
気づかなかったけど、これ5.7.2から入ってたのか。 フツーに扱うDATETIME型(やその親戚)は time_zone 変数に支配されるけど、ログに出力される時刻は log_timestamps 変数に支配される。 この変数の取りうる値は UTC または SYSTEM で、暗黙のデフォルトはUTC 。。 mysql57> SELECT @@version; +---------------+ | @@version | +---------------+ | 5.7.5-m15-log | +---------------+ 1 row in set (0.00 sec) mysql57> SHOW GLOBAL VARIABLES LIKE '%time_zone'; -- タイムゾーンはフツーにJST +------------------+--------+ | Variable_
2024 ( 18 ) 5月 ( 1 ) 4月 ( 3 ) 3月 ( 6 ) 2月 ( 1 ) 1月 ( 7 ) 2023 ( 20 ) 12月 ( 3 ) 11月 ( 3 ) 10月 ( 1 ) 8月 ( 1 ) 5月 ( 2 ) 4月 ( 2 ) 3月 ( 3 ) 2月 ( 5 ) 2022 ( 27 ) 12月 ( 5 ) 10月 ( 1 ) 9月 ( 1 ) 8月 ( 5 ) 7月 ( 4 ) 6月 ( 3 ) 4月 ( 1 ) 3月 ( 3 ) 2月 ( 2 ) 1月 ( 2 ) 2021 ( 22 ) 12月 ( 4 ) 10月 ( 2 ) 9月 ( 6 ) 7月 ( 1 ) 6月 ( 3 ) 5月 ( 3 ) 4月 ( 1 ) 3月 ( 2 ) 2020 ( 42 ) 12月 ( 3 ) 10月 ( 2 ) 9月 ( 4 ) 8月 ( 3 ) 7月 ( 4 ) 6月 ( 6
MySQLのロックについて JPOUG> SET EVENTS 20140907 2014/09/07 平塚 貞夫 1 Revision 2 自己紹介 • DBエンジニアをやっています。専門はOracle DatabaseとMySQL。 • オープンソースソフトウェアの導入支援をしています。 • 仕事の割合はOracle:MySQL:PostgreSQL=1:2:7くらいです。 • Twitter:@sh2nd • はてな:sh2 • • 写真は実家で飼っているミニチュアダックスのオス、アトムです。 2 本日のお題 3 想定外のデッドロック • MySQLのInnoDBストレージエンジンに対して、2つのトランザクション を以下の順番で実行するとデッドロックが発生します。 • このデッドロックの発生メカニズムを理解するために、InnoDBのロック アーキテクチャについて確認していきます。 4
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く