MySQL HeatWave MySQL HeatWave is a fully managed database service for transactions, real- time analytics across data warehouses and data lakes, and machine learning services, without the complexity, latency, and cost of ETL duplication. It is available on OCI, AWS, and Azure. Learn More » MySQL Enterprise Edition The most comprehensive set of advanced features, management tools and technical suppo
はじめに この記事では、MySQL を使って簡単なメッセージキューを手軽に実装する方法を解説します。 メッセージキューとは、メッセージを一時的に溜めておき、順次処理するための仕組みです。迅速なレスポンスが必要な Web アプリケーションにおいて、時間のかかる処理を非同期に行うために、バックグラウンドで順次処理していくような場合に利用できます。 簡単なメッセージキューと言っても、大規模な運用にも耐えられる程度の速度と堅牢性を持ちます。 また、ここで解説している方法で作られたメッセージキューは、弊社ウェブサービスであるニコニコ動画に最近追加されたtwitter連携機能でも利用しています。 メッセージキューを作るにあたって 今回実装するメッセージキューは メッセージの追加(push)を高速に行う事ができる メッセージの取得(pop)はある程度高速に行う事ができる 多くのクライアントから同時に p
Jet Profiler for MySQLはWindows/Mac OSX/Linux向けのフリーウェア。Webアプリケーションの開発でMySQLを採用するケースが多くなっている。そのため手軽に使える監視ツールが必要になっているのではないだろうか。数値で出るものも良いが、グラフ化されて見られるともっと良い。 MySQLのステータス管理に そんなデータベース管理者の方にお勧めできるMySQL監視ソフトウェアがJet Profiler for MySQLだ。マルチプラットフォームに対応したローカルアプリケーションであり、データがビジュアル化されて見られるので状況の把握が容易になるはずだ。 例えばクエリーの実行状況によってパフォーマンスがどの程度出ているのか、リアルタイムに反映されていく。最も良く使われているデータベースやテーブル、実行速度の遅いクエリーか否かの診断もできる。グラフは多数用意さ
ErmodellerはJava製のオープンソース・ソフトウェア。最近はデータが主体になったシステム開発が多い。データは大抵がデータベースによるものだ。そうなるとデータの定義が固まればコントローラの仕組みも大抵決まってくる。データベースを適切に設計することが、システムの組みやすさやパフォーマンスに大きな影響を及ぼすのだ。 各種DBに対応したモデリングができる そうなるとデータモデリングソフトウェアに対する期待が大きくなる。その点、マルチプラットフォームで動作するJava製のモデリングツールは優位だろう。Ermodellerは多数のデータベースに対応したモデリングソフトウェアとして便利に使えそうだ。 Ermodellerが対応するのはMySQL/PostgreSQL/Oracle/PointBaseとなっている。モデリングは概念、論理、物理型の3つに対応している。データベースからのリバースエン
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし
データベースを扱うアプリケーションといった場合、データベースサーバに対してクライアントの位置づけで動作するものを意味することが多いと思います。今回取り上げる「ストアドプロシージャ」もデータベースを扱うアプリケーションの一種ですが、クライアントの位置づけではなく、データベースサーバ内で動作するものという違いがあります。 MySQLはバージョン5.0をリリースするまでは、このストアドプロシージャを使用することができませんでした。よって、PostgreSQLとMySQLを比較すると、必ず「PostgreSQLではストアドプロシージャを使用できるが、MySQLではできない」といわれてきました。しかし今ではPostgreSQL、MySQLともにストアドプロシージャに関して十分な機能を有しています。 今回は、このストアドプロシージャを取り上げ、それぞれのRDBMSでの違いなどを説明します。ストアドプロ
MySQL 5.0のストアドプロシージャをチェック:エンタープライズ市場に向かうMySQL 5.0(後編)(1/3 ページ) MySQL 5.0最大の目玉はストアドプロシージャである。インストールした5.0を使って、ストアドプロシージャの動作を試してみよう。(編集局) # mysql -u root mysql> use test Database changed mysql> desc REGION; +-------+-------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------+-------------+------+-----+---------+----------------+ | NO | int(11) | | P
2007-11-29 01:29:14 About (rss)This is a set of MySQL UDFs (user defined functions) to work with memcached using libmemcached. With these functions you get, set, append, prepend, delete, increment, decrement objects in memcached, provide statistics, as well as set which servers to use and which behavior the server connections will use. Combine these functions with MySQL triggers and you can mana
MySQL Pro の著者の ZendCon08 での発表スライド. Join-fu: The Art of SQL Tuning for MySQL ケチれ ひたすらケチる. VARCHAR よりも CHAR 使え.VARCHAR 使うときは慎重に考えろ. TEXT は節約して使え. BLOG はもっと節約して使え. BIGINT とか必要か? セッションとかで IP アドレス記録するときも,INET_ATON とかで INT UNSIGNED で扱う方が容量少なくてすむ. さらに範囲も INT の範囲になるな. 以下の定義でも,各レコードは 4 byte = 32bit int だけ消費する INT(1) の「1」はストレージ上の消費桁数ではなく,「1桁目以外を 0 で埋める」ということ. CREATE TABLE ti ( a INT(1) UNSIGNED NOT NULL );
と言うかiptablesではまったの巻。 master側の設定 masterにしたいDB側で、とりあえず下記の設定を/etc/my.cnfに入れておく。 log-bin=mysql-bin server-id = 1次にreplication用のユーザーを追加しておきます。 mysql> GRANT REPLICATION SLAVE ON *.* TO 'repl'@'192.168.0.%' IDENTIFIED BY 'hogehoge';さらにmaster dataのdumpデータを取ります。 $ mysqldump --all-databases --master-data > /tmp/mysql_dump.sql $ scp /etc/mysql_dump.sql root@slave01:/tmp $ scp /etc/mysql_dump.sql root@slave02
ずぶ濡れ小堤です。 さて、MySQL5のレプリケーション設定を行ったのでメモ。 MySQLのバージョンはCentOS5を入れたときに、いれることができるRPM版の5.0.22です。 今回は、マスタ、スレーブの2台構成で、マスターを更新するとスレーブも自動的に更新されるというレプリケーションを行います。 マスターを2つ作って、お互いを更新しあうデュアルマスタや、マスターを複数で構成するマルチマスタの設定などは、そのうちやれればやろうかな。 MySQLはインストールされているものとして、設定をはじめます。 手順は下記の通りです。 ユーザの追加 マスタ設定 スレーブ設定 データの移行 マスターのMySQLを再起動して、スレーブを再起動 確認 1.ユーザの追加 マスタに対してレプリケーション用ユーザを作ります。スレーブがこのユーザを使って通信を行います。 GRANT REPLICATION SLA
komagataです。 Webアプリケーションのパフォーマンスの大半はデータベース、特にインデックスの使われ方にかかっている気がします。 仕事でもMySQLをよく使いますが、MySQLでは1テーブルに付き1インデックスしか使われません。PostgreSQLなどと比べてそのことが気になってMySQLでのパフォーマンスチューニングに全く自信が持てませんでした。 オライリーの実践ハイパフォーマンスMySQLには下記のように書かれています。 実際、UNIONを除き、MySQLでは、1つのクエリを実行するとき、1つのテーブルに付き1つのインデックスしか使用できない。この事実は、繰り返し述べるに値するほど重要である。「MySQLでは、1つのクエリを実行するとき、1つのテーブルにつき1つのインデックスしか使用できないのである。」 また、その制約を考えたクエリの書き方として下記の様に書いてあります。 my
最近のWebサービス開発ではオープンソースのデータベースを利用することが多くなってきた。それだけ信頼性や安定性も向上してきたということだろう。以前はPostgreSQLの方が人気があったが、最近ではMySQLを選ばれる方が多いようだ。 mk-parallel-dumpのヘルプ そうした中で、必要になってくるのがMySQLの管理ツールだ。特に規模の大きな開発を進める上で、デフォルトのツールだけでは物足りないと感じていた人は、こちらのさらに洗練されたツールを使ってみよう。 今回紹介するオープンソース・ソフトウェアはMaatkit、MySQL向けのコマンドラインツール群だ。 MaatkitはPerlで作られたソフトウェアで、MySQLの高度な操作を可能にするツールが幾つも提供されている。それらはmk-ではじまる名前のコマンド名になっている。執筆時点では19の機能がある。 コマンド一覧 主なコマン
今回は、MySQLの高速化のメモ - @luke_silvia.diaryの方法に従ってクエリの高速化をした際に、MySQLのインデックスについて分かったことを書いておきます。 高速化対象のクエリ 今回高速化したいクエリは、以下のようなもの。 SELECT users.*, students.school, workers.school FROM users LEFT JOIN students ON users.id = students.user_id LEFT JOIN workers ON users.id = workers.user_id WHERE (users.status= 1 AND ((kind = 0 AND students.school = 'test') OR (kind = 1 AND workers.school = 'test'))) ORDER BY
Some rake tasks to automate common database tasks (create/destroy & backup/restore). Components rake db:mysql:create # Create database (using database.yml config) rake db:mysql:destroy # Destroy database (using database.yml config) rake db:mysql:backup # Dump schema and data to an SQL file (/db/backup_YYYY_MM_DD.sql) rake db:mysql:restore # Load schema and data from an SQL file (/db/restore.s
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く