0

2台のサーバーで両方ともMySQLインスタンスを実行しています。最初のserver1は、MySQL5.0.22を実行しています。もう1つのserver2は、MySQL5.1.58を実行しています。

にメモリテーブルを作成しserver1、行を追加すると、そのサイズは即座になり8,190.0 KiBます。

ただし、にメモリテーブルを作成しserver2て行を追加すると、そのサイズはまだわずかsome bytesです。

これはMySQLのバージョンの違いが原因ですか、それとも(うまくいけば)変​​更できる設定が原因ですか?

編集:

この動作の理由はまだわかりませんが、回避策は見つかりました。だから、将来の参考のために、これは私のためにそれを修正したものです:

私のすべてのメモリテーブルは一度作成され、そこから読み取り専用になります。テーブルの最大行数をMySQLに指定すると、そのサイズは縮小します。次のクエリはあなたのためにそれを行います。

ALTER TABLE table_name MAX_ROWS = N
4

1 に答える 1

0

2の因数?

OK、問題はUTF-8とlatin1が原因である可能性があります:-http
: //dev.mysql.com/doc/refman/5.0/en/storage-requirements.html

両方のサーバーのデータベース接続、データベースのデフォルトの文字セットを確認できます。

これが私が今行ったテストです:-

mysql> create table test(name varchar(10))engine
    ->=メモリ;
クエリOK、影響を受ける行は0(0.03秒)

mysql> show create table test;
+ ------- + ----------------------------------------- -------------------------------------------------- ----- +
| テーブル| テーブルの作成|
+ ------- + ----------------------------------------- -------------------------------------------------- ----- +
| テスト| CREATE TABLE `test`(
  `name` varchar(10)DEFAULT NULL
)ENGINE = MEMORY DEFAULT CHARSET = latin1 |
+ ------- + ----------------------------------------- -------------------------------------------------- ----- +
セットの1行(0.00秒)

mysql>テスト値に挿入(1);

mysql>セット名utf8;
クエリOK、影響を受けた0行(0.01秒)


mysql> create table test2(name varchar(10))engine = memory default charset = utf8;
クエリOK、影響を受けた0行(0.01秒)

クエリOK、影響を受けた0行(0.01秒)

mysql> test2値に挿入(convert(1 using utf8));
クエリOK、影響を受ける1行(0.01秒)

mysql> select table_name、avg_row_length from information_schema.tables where TABLE_NAME in('test2'、'test');
+ ------------ + ---------------- +
| table_name | avg_row_length |
+ ------------ + ---------------- +
| テスト| 12 |
| test2 | 32 |
+ ------------ + ---------------- +
セットで2行(0.01秒)
于 2011-12-07T15:04:04.267 に答える