一般的なデータベースの本を読むと、 インデックスの中にNULLは含まれず、NULL述語を指定した検索はテーブルスキャンが実行されるそうです。 しかし、Microsoft SQL Server 2000やMySQL(InnoDB)で実際に検証したところ、 インデックスシークが行われているようでした。 下記の点について教えてください。 1. このような本の記述が正しいのか、 2. また、Oracleについてはそういえるのか、 3. そして、なぜそのような実装になっているか
以前、MySQLを高速化する10の方法という投稿で「EXPLAINの見方についてはいずれ解説しようと思う」と書いてしまったので、今日はその公約?を果たそうと思う。 MySQLのチューニングで最も大切なのは、クエリとスキーマの最適化である。スキーマの設計は一度決めてしまうとそのテーブルを利用する全てのクエリに影響してしまうためなかなか変更することは出来ないが、クエリはそのクエリだけを書き直せば良いので変更の敷居は低い。そして遅いクエリをなくすことは、性能を大幅に向上させるための最も有効な手段である。従って、アプリケーションの性能を向上させたいなら、まず最初にクエリのチューニングを検討するべきなのである。 最適化するべきクエリはスロークエリログやクエリアナライザで見付けられるが、ではそのようなクエリが見つかった場合にはどのように最適化すればいいのか?そのためにはまず現在どのようにクエリが実行さ
よくMySQLはサブクエリが弱いと言われるが、これは本当だろうか?半分は本当で半分は嘘である。MySQLのサブクエリだってなんでもかんでも遅いわけではない。落とし穴をしっかり避け、使いどころを間違えなければサブクエリも高速に実行できるのである。今日はMySQLがどんな風にサブクエリを実行し、どのような場合に遅いのかということについて説明しよう。 EXPLAINで実行計画を調べた際に、select_typeにはクエリの種類が表示されるのだが、代表的なサブクエリには次の3つのパターンがある。 SUBQUERY DEPENDENT SUBQUERY DERIVED 結論から言おう。遅いのは2番目、DEPENDENT SUBQUERYである。DEPENDENT SUBQUERYとはいわゆる相関サブクエリに相当するもので、サブクエリにおいて外部クエリのカラムを参照しているサブクエリのことである。そし
ちょっとキャッチ−なタイトルをつけてしまったが、今日は独断と偏見でMySQLを高速化する方法を10個紹介しよう。MySQLサーバをチューニングするときや初期導入する場合などに参考にしてもらいたい。 1. バッファを増やす、または減らす チューニングの基本中の基本であるが、適切なバッファサイズを設定することはパフォーマンスチューニングの要である。主なバッファは次の通り。 innodb_buffer_pool_size・・・InnoDBだけを利用する場合は空きメモリの7〜8割程度を割り当てる最も重要なバッファである。余談だが、実際にはここで割り当てた値の5〜10%ぐらいを多めにメモリを使うので注意が必要だ。 key_buffer_size・・・MyISAMだけを利用する場合は、空きメモリの3割程度を割り当てるといい。残りはファイルシステムのキャッシュ用に残しておこう。 sort_buffer_
MySQLを高速化する10の方法という記事がとても好評だったようである。記事を読んで頂いた皆さん、ありがとう。 この記事に対する便乗(?)でWeb屋のネタ帳: PostgreSQLを高速化する16のポイントという記事を書いて頂いたようだが、そちらの方もかなり人気だったようである。他人が作ったソフトウェアに改良を加えるというフリーソフトウェアやオープンソースソフトウェアの精神も基本は便乗であるので、便乗については大いに賛成したいというかむしろ取り上げてくれてありがとう!!と思うわけであるが、ここでさらに俺はこう考える。 と。 Web屋のネタ帳さんの記事では16のポイントが紹介されているが、漢(オトコ)のコンピュータ道の記事は10の方法だったのであと6つ足りない。オトコは数で勝負!!というわけで今日はネタを振り絞ってさらに7つのMySQL高速化テクニックを紹介しよう。 1. インテルコンパイラ
MySQLのチューニングにおいて非常に重要となるメモリ(バッファ)関連のパラメータについて、 チューニングのポイント DSASのとあるDBサーバ(実メモリ4GB)の実際の設定値 をまとめてみます。 また、必要メモリの総量の計算や限界値を越えてないかチェックしてくれるスクリプトも紹介します。 是非、参考にしてみてください! まず最初に注意点を。 バッファには2つのタイプがあります。 グローバルバッファ スレッドバッファ グローバルバッファはmysqld全体でそのバッファが1つだけ確保されるもので、 これに対し、 スレッドバッファはスレッド(コネクション)ごとに確保されるものです。 チューニングの際にはグローバル/スレッドの違いを意識するようにしましょう。 なぜなら、スレッドバッファに多くのメモリを割り当てると、コネクションが増えたとたんにアッという間にメモリ不足になってしまうからです。 in
Works > 逆引きSQL比較 逆引きSQL比較 [ 共通事項 ] [ ORACLE ] [ MSSQL ] [ SSA ] [ Postgres ] [ MySQL ] [ Jet ] Last Updated. 14-May-2006 Since 08-May-2001 ■はじめに 複数の RDBMS を使った経験がある人なら、おわかりかと思いますが、SQL は RDBMS によって異なる部分が結構あります。 このページは各 RDBMS における 基本的な機能(主にSQLについて)の概要を、逆引きで、かつ平易な言葉で閲覧 する事を目的に作ったリファレンスです。 特定の RDBMS を持ち上げたり、貶めたりするのが目的ではないので誤解なきよう。 また、間違いについてのご指摘や『こうした方が効率的だ』などのご意見も大歓迎です。 対象としているのは以下の RDBMSで
ライセンスはどうなっていますか?商用利用ではどうすべきですか? † GPL か 有料のライセンスか。 2007年1月1日時点では Community : GPL Enterprise : 有料で別のライセンス GPL については http://www.gnu.org/home.ja.html をご覧ください。 ↑ mysqld が最低必要とする物 † basedir/share/ ディレクトリ以下(shareファイル。errmsg.sys や charsets/) datadir/mysql/ (mysql 権限データベース、テーブル) 権限テーブルや charsets/ がなければ mysqld は起動しない。 errmsg.sys はバージョンによって数が違うので、違うバージョンの errmsg.sys を使用していると mysqld が起動しない。 これらが起きた場合、.err ファ
HeatWave MySQL Database Serviceは、世界で最も人気のあるオープンソースデータベースを使用してクラウドネイティブアプリケーションを構築するためのフルマネージドデータベースサービスです。 HeatWaveは、パフォーマンスを400倍高速化します。 詳しくはこちら » MySQL Enterprise Edition MySQLの最高レベルのスケーラビリティ、セキュリティ、信頼性、および稼働時間を実現するための、最も包括的で高度な機能、管理ツール、およびテクニカルサポートのセットです。 詳しくはこちら » MySQL for OEM/ISV 2,000を超えるソフトウェア開発企業や機器製造企業が、製品の組み込みデータベースとしてMySQLを利用しています。アプリケーション、ハードウェア、およびアプライアンスの競争力を高め、市場への参入を迅速化し、売上原価の削減に貢献
概要 これは MySQL リファレンスマニュアルです。 MySQL 8.0 から 8.0.25、および NDB のバージョン 8.0 から 8.0.25-ndb-8.0.25 に基づく NDB Cluster リリースについてそれぞれ説明します。 まだリリースされていない MySQL バージョンの機能のドキュメントが含まれている場合があります。 リリースされたバージョンの詳細は、「MySQL 8.0 リリースノート」を参照してください。 MySQL 8.0 の機能. このマニュアルでは、MySQL 8.0 のエディションによっては含まれていない機能について説明します。このような機能は、ご自身にライセンス付与されている MySQL 8.0 のエディションに含まれていない場合があります。 MySQL 8.0 の使用しているエディションに含まれる機能に関する質問がある場合は、MySQL 8.0
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く