Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Как можно оптимизировать эту базу


Автор: jhonyxakep 17.6.2015, 07:29
Привет всем.

Есть таблица в БД (MyISAM) с 12 миллионами записей, в которую каждый день добавляется в среднем по 100 тыс новых. 
Выборка из такой таблицы даже одной записи(SELECT * FROM table LIMIT 1) занимает 10-20 секунд (что вообще честно говоря полный бред).

1 запись в таблице выглядит примерно так:

Код

'6f96fd1528a1544ed2636841af025687', '2', '1348', '185915408', '4062', '2013-11-06 00:00:00', '0000-00-00 00:00:00', '1391563431', 'USS Kobe', 'ALFA ROMEO', 'GT', '2006', '64000', '2000', '93720L', 'GRAY', 'FA', '4.5', '', '50000', '0', '0', 'negotiate sold', '', NULL, NULL, '0'


Первое поле записи - уникальный индекс (да-да, это md5), именно на него я и грешу.

К сожалению такой формат базы был задолго до моего начала работы с ней, и реальные тормоза начались примерное на 10 миллионах записей.

Выборка происходит с небольшой загрузкой процессора (2-12%), и, в общем то, небольшой загрузкой жесткого диска. Тестировал только с одним подключением. 

ЗЫ.

Для теста создавал мини-таблицу с id-значение, используя теже md5 как уникальные индексы, и конкретно в ней тормозов нет.

Также возникают странные затупы с другими таблицами, даже маленькими. MySQL также долго делает выборку из таких таблиц.


Автор: Akina 17.6.2015, 11:13
Цитата(jhonyxakep @  17.6.2015,  08:29 Найти цитируемый пост)
Первое поле записи - уникальный индекс (да-да, это md5)

Уникальный индекс или первичный индекс?
Если первичный - попробуй сделать его именно уником, и ввести в структуру синтетический первичный индекс.

Автор: jhonyxakep 18.6.2015, 03:45
Цитата(Akina @  17.6.2015,  11:13 Найти цитируемый пост)
Уникальный индекс или первичный индекс?
Если первичный - попробуй сделать его именно уником, и ввести в структуру синтетический первичный индекс. 


Сделал на копии базы - всё также затупно.

Ещё заметил, что команда SHOW DATABASES выполняется 2 минуты. Всего 2 базы и 30 таблиц суммарно.

Добавлено через 1 минуту и 24 секунды
З.Ы. Если выполнять поиск по числовым параметрам то он выполняется почти моментально. Похоже какой-то структурный глюк

Автор: Akina 18.6.2015, 12:29
jhonyxakep, сколько времени выполняется запрос типа 
Код

SELECT * 
FROM table
WHERE md5_id = '6f96fd1528a1544ed2636841af025687'

?

Причём как для существующего в таблице значения, так и для несуществующего.

И покажи НАСТОЯЩИЙ create table для этой таблицы.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)