8
Работа MySQL с экстремально большими таблицами Григорий Рубцов, SQLinfo.ru [email protected]

Работа MySQL с экстремально большими таблицами

Embed Size (px)

DESCRIPTION

Работа MySQL с экстремально большими таблицами. Григорий Рубцов , SQLinfo.ru [email protected]. Григорий Рубцов , [email protected]. MySQL может работать с миллиардами записей в таблице Полезные алгоритмы : пакетная вставка построение индекса. Григорий Рубцов , [email protected]. - PowerPoint PPT Presentation

Citation preview

Page 1: Работа  MySQL  с экстремально большими таблицами

Работа MySQL с экстремально большими таблицамиГригорий Рубцов, [email protected]

Page 2: Работа  MySQL  с экстремально большими таблицами

• MySQL может работать с миллиардами записей в таблице

• Полезные алгоритмы:– пакетная вставка– построение индекса

Григорий Рубцов, [email protected]

Page 3: Работа  MySQL  с экстремально большими таблицами

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]

Page 4: Работа  MySQL  с экстремально большими таблицами

В 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]

Page 5: Работа  MySQL  с экстремально большими таблицами

• Cоздание индекса требует свободного места в tmpdir, иначе будет использован неэффективный алгоритм “Repair with keycache”

• ALTER TABLE сначала копирует всю таблицу во временную;

Григорий Рубцов, [email protected]

Page 6: Работа  MySQL  с экстремально большими таблицами

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]

Page 7: Работа  MySQL  с экстремально большими таблицами

Число строк Время загрузки

Построение индекса

Выборка по индексу

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]

Page 8: Работа  MySQL  с экстремально большими таблицами

• Большие таблицы работают

• Построение индексов масштабируется как O(N1.2), что недалеко от оптимального O(N log N)

• Использование PARTITIONING улучшает масштабируемость

Григорий Рубцов, [email protected]