0

行サイズを制限するとサイズが設定された最大値に保たれることはわかっていますが、すべての行を必要な最大値に制限すると、行のパフォーマンスが向上します(つまり、占有するスペースが少なくなります)

または、mysqlは行に必要なサイズを動的に割り当て、最大行長はそれに影響しませんか?

4

3 に答える 3

1

MySQLはフィールドのサイズを動的に変更しません。潜在的に必要なサイズは、選択したデータ型によって決まります。ただし、データベースの最適化に役立つ適切なデータ型を選択できます。

たとえば、、、、、、およびデータ型にはTINYINT、それぞれ1バイト、2バイト、3バイト、4バイト、および8バイトが必要です。10,000までの整数のみを格納する場合は、65,535(符号なし)までの値を格納でき、十分なスペースがあり、の半分のサイズが必要になるため、最適な選択です。SMALLINTMEDIUMINTINTBIGINTSMALLINTINT

255までの任意の長さのような可変長タイプではVARCHAR、長さを格納するために1バイトのプレフィックスを使用します。それ以上のものは2バイトのプレフィックスを使用します。VARCHAR可能であれば、sを最大255に制限するのが最善です。例として、文字列はフィールドとフィールドのfoo両方で4バイトを必要とします。たとえば、フィールドの最大長が500の場合、5バイトが必要になります。VARCHAR(3)VARCHAR(255)foo

短い(場合によっては長い)テキストxolumnでCHAR可能な場合、文字列が常に同じ長さまたは非常に近い長さである場合、このタイプは有益です。また、MyISAMストレージエンジンを使用していて、すべての列が固定長である場合は、FIXED行形式を使用できます。これは便利です。

MySQLデータ型の詳細については、マニュアルを参照してください。

于 2013-02-27T16:08:24.987 に答える
0

質問の目的はわかりませんが、データベースで使用されるストレージスペースを最小限に抑えたい場合は、組み込みの圧縮を使用できます。これは、InnoDBストレージエンジンを使用している場合に使用できます。

詳細:テーブルの圧縮の有効化(dev.mysql.com)

それがパフォーマンス(速度)にどのように影響するかはわかりません。その機能を使用したことはありませんが、圧縮によってデータベースの速度が大幅に低下する可能性があると思います。ただし、一部のホスティングサーバーのディスク容量が限られている場合は、負荷の高いアプリケーションに役立つ場合があります。

于 2013-02-27T17:52:21.390 に答える
0

MySqlは必要なサイズを自動的に割り当てないため、データベースのパフォーマンスを向上させ、最小サイズに保つために自分で定義する必要はありません。

VARCHARを長い文字列に使用する場合は、VARCHARの代わりにNVARCHARを使用することでしたが、多くのスペースを必要とするTEXTに適合するには十分な長さではありませんでした。

于 2013-02-28T21:12:42.680 に答える