2030 件中 1851 - 1860 件を表示
« 前の 10 件 | 次の 10 件 »
Displaying posts with tag: MySQL (reset)
Distribution Awareness - MySQL Clusterにおけるスキーマチューニングの定石

MySQL Clusterはデータノードが増えると性能が低下する???

そのような噂を聞いたことがないだろうか。この噂は事実を含んでいる面もあるが、殆どの場合は適切にスキーマを設計していないことが原因で起きる。実はMySQL Clusterはその性能を遺憾なく発揮するためにはスキーマの設計が非常に大事なのである。

MySQL Clusterは複数のデータノード(ノードグループ)に対して主キーの値に基づいて行単位で分散されている。主キーに偏りがなければ各データノードに格納される行数は均等になる。つまり、MySQL ClusterはSharding(アプリケーションパーティショニング/Level2分散)を自ら行っていると言えるだろう。

MySQL …

[さらに読む]
SQL のWHERE句の条件に関数を使うとインデックスが使用されない

Rails でfind_by_sql を使う場合に、大きいSQL だと次のようにSQL 中に関数を使ってしまうことがありました。
単純な例だとこんな感じ。

User.find_by_sql([<<-SQL, {:id => 1}])
SELECT *
FROM users
WHERE
  IF(
      :id,
      id = :id,
      1
    )
SQL


でも、このようにIF 関数中に条件式を書いてしまうと、インデックスが使用されません。

[test]> explain SELECT * FROM users WHERE  IF(1, id = 1,  1); …
[さらに読む]
MyISAMのコンカレントインサート機能

こんにちは。今回はMyISAMストレージエンジンの並列インサート機能(Concurrent Insert)についてちょっと書いてみたいと思います。

MyISAMは皆さんご存知のように、テーブルレベルのロックのみで行レベルでのロックがサポートされていません。MySQLではSELECTコマンドの実行時に暗黙的リードロック(Shared Read lock)がかかるようになっており、一般的にはこのロックが対象のテーブルに存在している場合には、書き込み処理(INSERT,UPDATE,DELETE,ALTER TABLEなど)がロック待ちとなります。SELECTの実行が完了してからINSERTなどが実行される形になります。

[さらに読む]
MyISAMのコンカレントインサート機能

こんにちは。今回はMyISAMストレージエンジンの並列インサート機能(Concurrent Insert)についてちょっと書いてみたいと思います。

MyISAMは皆さんご存知のように、テーブルレベルのロックのみで行レベルでのロックがサポートされていません。MySQLではSELECTコマンドの実行時に暗黙的リードロック(Shared Read lock)がかかるようになっており、一般的にはこのロックが対象のテーブルに存在している場合には、書き込み処理(INSERT,UPDATE,DELETE,ALTER TABLEなど)がロック待ちとなります。SELECTの実行が完了してからINSERTなどが実行される形になります。

[さらに読む]
MyISAMのコンカレントインサート機能

こんにちは。今回はMyISAMストレージエンジンの並列インサート機能(Concurrent Insert)についてちょっと書いてみたいと思います。

MyISAMは皆さんご存知のように、テーブルレベルのロックのみで行レベルでのロックがサポートされていません。MySQLではSELECTコマンドの実行時に暗黙的リードロック(Shared Read lock)がかかるようになっており、一般的にはこのロックが対象のテーブルに存在している場合には、書き込み処理(INSERT,UPDATE,DELETE,ALTER TABLEなど)がロック待ちとなります。SELECTの実行が完了してからINSERTなどが実行される形になります。

[さらに読む]
あのサイトでMySQL Clusterが?!

MySQL Clusterの導入事例資料が出来た。資料は下記のキャンペーンサイトから入手可能で、要登録だがささやかではあるがプレゼントもあるようなのでぜひ登録してみて欲しい。

http://www.computerworld.jp/eye/sun/200904/

某有名WebサイトにおけるMySQL → MySQL Clusterへの乗り換えの事例である。MySQL Clusterの導入に興味のある方はぜひ見てみよう。オフィシャルなMySQL Clusterの国内ユーザの事例パンフレットはこれが初なので、そういう意味でもこの資料は必見だ!!

ちなみに、この資料ではMySQL Cluster以外にも …

[さらに読む]
GPLに対するオトコの個人的見解

なぜ自分がMySQL関係の仕事をしているのか?もちろんMySQLが技術的に面白いということや、MySQLの優れた性能に惹かれているという部分はあるが、それよりも何よりもライセンスがGPLだということが一番の理由である。なぜGPLがいいのか?それは最も自由なライセンスだからである。

GPLよりBSDライセンスのほうが自由ではないのか?GPLソフトウェアを改変した場合、そのソフトウェアもGPLでリリースいなければいけない。BSDライセンスなら別のオープンソースでないライセンスにするという自由があるではないか。という反論があるかも知れない。

[さらに読む]
MySQLのEXPLAINを徹底解説!!

以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。

MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。

[さらに読む]
なぜMySQLのサブクエリは遅いのか。

よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。

EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。

  1. SUBQUERY
  2. DEPENDENT SUBQUERY
  3. DERIVED


結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT …

[さらに読む]
Ruby/MySQL 3.0.0 alpha

github に Ruby/MySQL 3.0.0 を置きました。

git にも gem にも慣れてないので試行錯誤でしたが、なんとか置けたようです。

github は gemspec を置いておけば自動的に gem を作ってくれるはずなのですが、罠に嵌まってもがいてました。

GitHub では *.gemspec ファイルのバージョン番号が更新されたときにのみ Gem を生成する。だから *.gemspec を最初に commit & push したときは、Gem が生成されない(バージョン番号が更新されているわけではないから)。まずは *.gemspec ファイルをバージョン 0.0.0 とかで commit & push し、そのあとバージョンを上げて commit & push し直す。

[さらに読む]
2030 件中 1851 - 1860 件を表示
« 前の 10 件 | 次の 10 件 »