Upload
guinevere-madden
View
85
Download
0
Embed Size (px)
DESCRIPTION
Работа MySQL с экстремально большими таблицами. Григорий Рубцов , SQLinfo.ru [email protected]. Григорий Рубцов , [email protected]. MySQL может работать с миллиардами записей в таблице Полезные алгоритмы : пакетная вставка построение индекса. Григорий Рубцов , [email protected]. - PowerPoint PPT Presentation
Citation preview
Работа MySQL с экстремально большими таблицамиГригорий Рубцов, [email protected]
• MySQL может работать с миллиардами записей в таблице
• Полезные алгоритмы:– пакетная вставка– построение индекса
Григорий Рубцов, [email protected]
CREATE TABLE `l18_45_1` (
`lev` tinyint(4) NOT NULL,
`x` smallint(6) NOT NULL,
`y` smallint(6) NOT NULL,
`t` smallint(6) NOT NULL,
`i` tinyint(3) unsigned NOT NULL,
`e` smallint(5) unsigned NOT NULL,
`c` smallint(6) NOT NULL
) ENGINE=MyISAM;
Григорий Рубцов, [email protected]
В csv-файле 2.8 млрд. строк (81 Gb)
mysql> LOAD DATA LOCAL INFILE 'l18_45_1.csv' INTO TABLE `l18_45_1`;
Query OK, 2845803579 rows affected (48 min 59.57 sec)Records: 2845803579 Deleted:0 Skipped:0 Warnings:0
mysql> ALTER TABLE `l18_45_1` ADD KEY (lev,x,y);
Query OK, 2845803579 rows affected (2 hours 52 min)Records: 2845803579 Duplicates:0 Warnings:0
Григорий Рубцов, [email protected]
• Cоздание индекса требует свободного места в tmpdir, иначе будет использован неэффективный алгоритм “Repair with keycache”
• ALTER TABLE сначала копирует всю таблицу во временную;
Григорий Рубцов, [email protected]
mysql> SELECT t,i,e,c FROM l18_45_1 WHERE lev=7 AND x=1211 AND y=-19;
+------+---+------+-------+| t | i | e | c |+------+---+------+-------+| 4999 | 1 | 3193 | 17934 || 5097 | 1 | 2839 | 17004 || 5015 | 1 | 3681 | 17331 || 5021 | 1 | 3283 | 9422 || 5023 | 1 | 3836 | 11277 || 4991 | 1 | 4033 | 15957 |+------+---+------+-------+6 rows in set (0.11 sec)
Григорий Рубцов, [email protected]
Число строк Время загрузки
Построение индекса
Выборка по индексу
0.03x109 0.5 мин 0.8 мин 0.01 сек
0.31x109 4.8 мин 10.1 мин 0.07 сек
2.85x109 49.0 мин 172.0 мин 0.15 сек
Григорий Рубцов, [email protected]
• Большие таблицы работают
• Построение индексов масштабируется как O(N1.2), что недалеко от оптимального O(N log N)
• Использование PARTITIONING улучшает масштабируемость
Григорий Рубцов, [email protected]