2012-03-15 5 views
-2

BigIntを使用すると、データベースの速度が中程度のintに比べて大幅に低下します。もしそうなら、それを使って私のデータベースの遅い日付の割合をどのように計算できますか?MySQLはBigINTの署名を保存する私のデータベースを遅くする?

+0

どうしてあなたは試してみませんか? –

+0

何に比べて? –

+0

アプリケーションを配置して実行する場所にbigint列を挿入します。ここに2,3のストップウォッチを挿入してください。観察する。結論を出す。 –

答えて

2

あなたはMyISAMテーブルでALTER TABLE ... ROW_FORMAT-Fixedを使用して行を展開すると、テーブルは百分の80から100を成長する

...私はあなたにこの方法でそれを置くましょうが、あなたは20から25パーセントのパフォーマンス比較ブーストを取得します。どうして?

書籍MySQL Database Design and Tuningは、72,73ページの​​を使用することをお勧めします。これは、内部的にすべてのVARCHARフィールドをCHARに変換します。これはMyISAMテーブルを大きくしますが、それに対してSELECTを実行する方がはるかに高速です。私は個人的にこれを証明することができます。かつて私は1.9GBだったテーブルを持っていました。 ALTER TABLE tblname ROW_FORMAT = FIXEDでフォーマットを変更しました。テーブルは3.7GBに達しました。それに対するSELECTの速度は、他のものを改善したり変更したりすることなく、20〜25%速くなりました。

これは数字とは関係ありません。しかし、理論的には(これも試してみましたが)、より小さな整数形式を使用すると、データベースの内部操作が高速になります。それを考えてください。より小さい整数は、テーブル、インデックス、さらにはキャッシングのバイトアライメントの問題を軽減します。

私が今言ったことを信頼するには、運用データのコピーを使用してステージングサーバーで試してみる必要があります。ただ、これに基づいて適切な列に変換:

  • どれint型フィールド< = 255を、任意のint型フィールド< = 65535、MEDIUMINTを使用し、任意のint型フィールド< = 16777215 SMALLINT UNSIGNED
  • を使用TINYINT UNSIGNED
  • を使用
  • UNSIGNEDどれint型フィールド< = 4294967295、INT UNSIGNED

に結果を使うのか?

  • 小規模MyISAMテーブル(.MYDや.MYIファイル)
  • 小さめのInnoDBテーブル(の.ibdファイル)データとインデックスのためのMyISAMキーキャッシュ
  • より部屋の中でのインデックスの
  • その他の部屋InnoDBバッファプール

Try it !!!

CAVEAT

私はアプリのコードを参照するわけではない、唯一のサーバーSDE操作。

関連する問題