垂直スケーラビリティと効果的なテストによる金融取引システムのパフォーマンスと効率の最大化 Peter Lawrey氏はJavaチャンピオンであり、Chronicle SoftwareのCEOとして、開発者を鼓舞してソリューションのクラフトマンシップを高めることに情熱を注いでいる。経験豊富なソフトウェアエンジニアとして、Lawrey氏はソフトウェア開発プロセスにおけるシンプルさ、パフォーマンス、創造性、革新性を奨励することに努めている。
![Zendesk、DynamoDBからMySQLとS3へ移行し、コストを80%以上削減](https://cdn-ak-scissors.b.st-hatena.com/image/square/dccf359944b7b22576de53fe8a5706c94e410975/height=288;version=1;width=512/https%3A%2F%2Fcdn.infoq.com%2Fstatics_s1_20240319074520-2%2Fstyles%2Fstatic%2Fimages%2Flogo%2Flogo-big.jpg)
ヤフー株式会社は、2023年10月1日にLINEヤフー株式会社になりました。LINEヤフー株式会社の新しいブログはこちらです。LINEヤフー Tech Blog はじめまして、Yahoo!ショッピングでシステム開発を担当している村上です。 Yahoo!ショッピングでは数億件にのぼる商品が日々更新されています。 今回はそれを支える巨大なDBの運用の中で遭遇したMySQLのアンチパターンと、回避した方法について紹介いたします。 特定のテーブルをJoinするとすごく遅くなる Yahoo!ショッピングでは商品を出品するためのツールがあります。 商品情報には「商品名」「価格」といった、任意で設定可能な項目のほか、「ブランド」「商品種別」など、製品ごとに入力する内容が決まっている項目を、マスター情報としてテーブルで管理しています。 このマスター情報を利用して、出品の際に入力情報が正確であるかどうか確か
最近ではPaaS型のクラウドがかなり普及しており、サーバを自分で用意しなくても簡単にサービスを公開できるようになりました。そのため、自分向けの便利サービスなどを作っている人も多いのではないかと思います。しかし、サービスの初期段階だとうまく動いていた機能が時とともに、だんだんと重くなっていき使いにくくなることもあるかと思います。 そんな時には、データベースに限った話ではありませんが、チューニングをしよう!と考えるかと思いますが、どこをどのようにチューニングすれば高速化が見込めるかは、しっかりと計測してみないとわかりません。当てずっぽうにチューニングした結果、実はあまり関係がなかったということもあるかと思います。 そこで、今回はMySQLに簡単な設定をすることで遅いSQLを記録するためのスロークエリーログを有効にして、チューニングのために必要な情報を収集できるようにしたいと思います。 デモンス
以前,MySQL (正確にはMariaDB) を使った際,いろいろはまったので記載します. 使ったバージョンが古い(MariaDB 10.1.37, MySQL 5.7くらいに相当)なので,最新版では治っているところもいくつかあります. sql_modeをデフォルトの設定で使わない これはよく言われていることですが,sql_modeがデフォルトでは変な値が入ったりエラーになって欲しいところがスルーされたりしてまずいので,適切なsql_modeを設定します. 第18回 MySQL5.7のデフォルトのSQLモードを確認してみる:MySQL道普請便り|gihyo.jp … 技術評論社 MySQLのSQLモードをstrictモードで設定する。 - Qiita ただ,MySQL 5.7以降はデフォルト設定が改善されたようです.(でも確認すべきですが) MySQL :: MySQL 8.0 Refer
ダンプリストア時にAccess denied; you need (at least one of) the SUPER privilege(s) for this operationMySQL
それほどDBに詳しくないアプリエンジニアが何かトラブった時にすぐさま行動して問題把握できるようになる情報を列挙しておきます。 開発時、障害時の対処療法やちょっとした定期監視方法などを対象にしています。 抜本的な対策などはインフラエンジニアさんにお任せしたほうがいいと思います。 DBはいろんな意味でこわいんでできれば触りたくないです>< 事前確認 MySQLサーバーのシステム設定値を確認しておく 以下のようにサーバーのシステム設定値を確認できます。 mysql> SHOW GLOBAL VARIABLES; # ワイルドカード(%)を用いた絞り込み mysql> SHOW GLOBAL VARIABLES LIKE 'performance_schema%'
はじまる前に この記事では主にAnsibleの機能を紹介したいと思います。 playbookに記述したMySQLの詳細を知りたい方は次の記事を参照してください。 CentOS 7.3でMySQL 5.7を設置、かなり勉強になりました。 MySQLのSQLモードをstrictモードで設定する。 やりたいこと 実際のサービス環境でMySQLを運用する場合、このくらいは必要だと思ったことを書いてみた。 master1台とslave2台のレプリケーション構成 スロークエリを残す。 MySQLをstrictモードで使う。 これらをAnsibleのplaybookで作成する。 ファイル構成 # mysqlのrole roles/mysql ├── handlers │ └── main.yml ├── tasks │ └── main.yml └── vars └── main.yml # d
Java, MySQL, Redisを利用するWebアプリケーションの開発環境をDocker CE for Windowsで構築するJavaMySQLRedisDocker 概要 MySQL、Redisを利用するWebアプリケーションをJava(フレームワークにSpring Bootを使用)で開発、実行する環境をDocker CE for Windowsで構築したときのメモです。 MySQLおよびRedisはオフィシャルイメージを利用したコンテナで、Spring Bootで開発したWebアプリケーションはCentOS7のオフィシャルイメージを利用したコンテナにOpenJDKをインストールして実行します。 ソースコードはrubytomato/docker-demo-redisにあります。 環境 Windows 10 Professional Docker CE for Windows 18.
この記事は12/1のDocker2 Advent Calendar, 12/3のHamee Advent Calendarの記事です。 こんにちは。 docker composeめちゃくちゃ便利ですよね。 Chef, Vagrant, Puppet, Ansible, Fabric…とプロビジョニングツールとか仮想化ツールを色々触ってきましたが、 それらよりずば抜けて扱いやすいと思っているツールです。 で、ローカルで開発している時に困るのが、 MySQLをはじめDBにデータを持ってもコンテナを破棄するとデータがすっ飛ぶ 問題です。 軽量なアプリの場合ならDB破棄してシード流して、、、という構成でもイケるかも知れませんが、多くの場合オーバーヘッドが大きすぎてまともに開発できなくなると思います。 Docker for Macを使用している場合はこの問題は難なく解消できるのですが、 docker
スナップショットを使えばとある瞬間のディスクやファイルシステムのデータをいつでも後から参照することができる。しかもスナップショットの作成は一瞬だ。スナップショット機能を活用すれば最強のオンラインバックアップソリューションが出来るだろう。 しかし、スナップショットでバックアップを取るなんて危険な操作じゃないのか?!と不安に思われる方もいらっしゃるかも知れない。MySQL Serverが稼働中にいきなりデータだけをとってくるのだから、そのような疑問を持たれるのは頷ける。しかし仕組みさえ分かればスナップショットによるバックアップは怖くないということが分かるはずだ。そこで、まずはスナップショットによるバックアップの仕組みについて説明する。スナップショットを取る際の要件は次の通りである。 全てのデータを単一のボリュームに置くこと。つまり、一回のスナップショット操作でバックアップが取れることだ。 ディ
MySQL JDBC ドライバ(MySQL Connector/J)、Java で MySQL といえばまずコレだが、これまた地味に罠が多い(そして多くの人が踏んで苦しむ)のでまとめてみた。 (2015/03/19) こちら のコメント欄でご指摘ただいた wait_timeout の件について記事修正いたしました。 Summary 以下、いずれもプログラム設計時に理解しておかないと、開発中は大丈夫そうでも実用した途端に苦しまされれてしかも設計から治す羽目になる要注意な罠である: SELECT 結果は全部メモリに載ってしまう (デフォルト設定で) 大量 SELECT する場合は FetchSize, ResultSetType を要設定 利用時には制約があるので、設計段階から考慮しなければならない (後述) idle 時間の「合計で」コネクションが切られる 前回のクエリ処理から一定時間以上経
※RDSは使っていません。 負荷を見てみる DBサーバーの負荷状況を見てみます。 当時の監視ツールの画像がないのですが、以下の状況でした。 LA(Load Average)が突き抜けている リクエスト数は「常識的に考えて」それほどでもない メモリの使用量にあまり変化がない swapはしていない ストレージ容量を結構食っている WEBサーバーから見れば、処理待ちのままプロセスが処理されていない典型的なパターンだったと思います。 DBサーバーとしては、LAに対し、メモリの使用量があっていないように思われました。 仮説 上記の状態から、仮説を立てます。 スロークエリ が頻発しているのではないか メモリ が正しく割り当てられていないのではないか 各種ログ の設定が適切ではないのではないか 仮説を検証することで、対策をしていきます。 設定を見直す 上記の仮説の設定は、MySQLの設定ファイルである「
本稿ではデータベースサーバー MySQL Community Server 5.6 を yum を利用して CentOS 7 にインストールする手順について解説します。 事前準備 CentOS 7 には mariaDB という MySQL 互換のデータベースサーバーがデフォルトでインストールされている場合がありますので、これからインストールする MySQL と競合を起こさないように削除しておきましょう。 つぎのコマンドのように mariaDB 本体とデータフォルダを削除しておきます。 # yum remove mariadb-libs # rm -rf /var/lib/mysql/ MySQL 公式 yum リポジトリの追加 RHEL系の Linux は、パッケージ管理ツール yum を利用して様々なソフトウェアをインストールすることができますが、CentOS 7 からは標準リポジトリで
テーブルのサイズはphpMyAdminでも見れますが、コマンドから見れたほうが何かと便利なので、調べてみました。 全てのデータベースのサイズを確認する # MB単位 select table_schema, sum(data_length+index_length) /1024 /1024 as MB from information_schema.tables group by table_schema order by sum(data_length+index_length) desc; +--------------------------+---------------+ | table_schema | MB | +--------------------------+---------------+ | database1 | 5579.89978790| | databas
Elastic Stackの紹介とOpenStackでの活用事例(Searchlightなど) - OpenStack最新情報セミナー 2016年5月VirtualTech Japan Inc.
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く