mmaaxx
Новичок
Уменьшение размера ключа привело к увеличению размера индекса, Почему?
MYSQL version(): 5.1.11-beta-debug-log
Была такая таблица (переименована в *_original) :
эта таблица была переделана в такую:
Фактически вместо equipment_id (16 байт) + sensor (1 байт) был введен sensor_id (4 байт). Фактически каждая пара equipment_id @ sensor, была переиндексирована в sensor_id (4 байт для всех сенсоров с головой хватит). Соответственно изменился и ключ (раньше он был 21 байт, сейчас — 8). Это делалось чтобы уменьшить размер данных и индекса.
НО размер индекса вырос почти в 2 раза!!!
Почему, и как с этим боротся???
MYSQL version(): 5.1.11-beta-debug-log
Была такая таблица (переименована в *_original) :
PHP:
'events_original', 'CREATE TABLE `events_original` (
`equipment_id` varchar(16) NOT NULL DEFAULT '0',
`sensor` tinyint(3) unsigned NOT NULL DEFAULT '0',
`type` tinyint(3) unsigned NOT NULL DEFAULT '0',
`time` int(10) unsigned NOT NULL DEFAULT '0',
`data` double DEFAULT NULL,
`message` text,
KEY `equipmentid` (`equipment_id`,`sensor`,`time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1'
Размеры такие:
mysql> show table status from phoenix like "events_original";
*************************** 1. row ***************************
Name: events_original
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 3881402
Avg_row_length: 36
Data_length: 140661920
Max_data_length: 281474976710655
Index_length: 32896000
Data_free: 0
Auto_increment: NULL
Create_time: 2006-10-25 14:30:07
Update_time: 2006-12-01 13:14:58
Check_time: 2006-12-01 13:14:58
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.01 sec)
PHP:
'events', 'CREATE TABLE `events` (
`type` tinyint(3) unsigned NOT NULL DEFAULT '0',
`time` int(10) unsigned NOT NULL DEFAULT '0',
`data` float DEFAULT NULL,
`message` text,
`sensor_id` int(11) NOT NULL,
KEY `speed` (`sensor_id`,`time`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1'
Размеры такие:
mysql> show table status from phoenix like "events";
*************************** 1. row ***************************
Name: events
Engine: MyISAM
Version: 10
Row_format: Dynamic
Rows: 3831702
Avg_row_length: 20
Data_length: 78099568
Max_data_length: 281474976710655
Index_length: 54848512
Data_free: 0
Auto_increment: NULL
Create_time: 2006-12-01 13:31:36
Update_time: 2006-12-01 13:33:56
Check_time: 2006-12-01 13:33:56
Collation: latin1_swedish_ci
Checksum: NULL
Create_options:
Comment:
1 row in set (0.02 sec)
Фактически вместо equipment_id (16 байт) + sensor (1 байт) был введен sensor_id (4 байт). Фактически каждая пара equipment_id @ sensor, была переиндексирована в sensor_id (4 байт для всех сенсоров с головой хватит). Соответственно изменился и ключ (раньше он был 21 байт, сейчас — 8). Это делалось чтобы уменьшить размер данных и индекса.
НО размер индекса вырос почти в 2 раза!!!
Почему, и как с этим боротся???