MySQL 5.1 リファレンスマニュアル :: 6 最適化 :: 6.1 最適化の概要 :: 6.1.1 MySQL の設計上の制約とトレードオフ
« 6.1 最適化の概要

6.1.2 移植性のためのアプリケーション設計 »
Section Navigation      [Toggle]
  • 6.1 最適化の概要
  • 6.1.1 MySQL の設計上の制約とトレードオフ
  • 6.1.2 移植性のためのアプリケーション設計
  • 6.1.3 MySQL 使用実績
  • 6.1.4 MySQL ベンチマークスィート
  • 6.1.5 独自のベンチマークの使用

6.1.1. MySQL の設計上の制約とトレードオフ

MyISAMストレージエンジンの使用時に、MySQL では非常に高速のテーブルロック(複数リーダ/単一ライタ)が使用されます。 このテーブル型の最大の問題は、同じテーブルに対して複数の UPDATE と遅い SELECT が混在する場合に発生します。テーブルでこのような問題が発生した場合は、別のテーブル型を使用してもかまいません。 章 13. ストレージエンジンとテーブルタイプを参照してください。

MySQL はトランザクションテーブル、非トランザクションテーブルの両方で機能します。非トランザクションテーブル(何らかのエラー発生した場合にロールバックができない)での動作をスムーズにするため、MySQL には次のルールがあります。 このルールが適用されるのは正確にSQLモードで作動しているとき、あるいはIGNOREスペシファイヤをINSERTもしくはUPDATEに使用しているときのみです。

  • すべてのカラムにデフォルト値がある。

  • カラムに対して'正しくない' 値を挿入した場合や、数値列の数値が大きすぎる場合、MySQL ではエラーを発生するのではなく、「とりうる可能な値のうちの最適値」に値を設定する。数値の場合は 0 で、可能な最小値か最大値になる。文字列の場合は、空白文字かカラムの最大長さにあわせた文字列になる。

  • 計算式はすべて、エラー状態を表示するのではなく、使用可能な値を返す。たとえば、1/0 の場合は、NULLを返す。

SQLのサーバモードの設定をすることで、さらに制御されたデータの扱いを有効にします。このことにより、以前の動作反応を変更することができます。この詳細については、項1.8.6. 「MySQL における制約の処理」、項4.2.6. 「SQL モード」、そして項12.2.4. 「INSERT 構文」を参照してください。

Copyright © 1997, 2010, Oracle and/or its affiliates. All rights reserved. Legal Notices
Top / Previous / Next / Up / Table of Contents
© 2010, Oracle Corporation and/or its affiliates