Задавайте вопросы, мы ответим
Вы не зашли.
Страниц: 1
Есть таблица:
-- Структура таблицы `work`
CREATE TABLE IF NOT EXISTS `work` (
`id` int(11) NOT NULL,
`first_name` int(11) DEFAULT NULL,
`last_name` int(11) DEFAULT NULL,
`bdate` date DEFAULT NULL,
`day` tinyint(2) NOT NULL,
`month` tinyint(2) NOT NULL,
`year` int(5) NOT NULL,
`country` int(11) DEFAULT NULL,
`city` int(11) DEFAULT NULL,
`data` longtext,
`pr` tinyint(1) NOT NULL,
PRIMARY KEY (`id`),
KEY `bdate` (`bdate`),
KEY `pr` (`pr`),
KEY `day` (`day`),
KEY `month` (`month`),
KEY `year` (`year`),
KEY `first_name` (`first_name`),
KEY `last_name` (`last_name`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
В таблице 10 миллионов записей.
Делаю выборку исключительно по цифровым полям, которые проиндексированы:
SELECT id FROM work where first_name = '11' AND last_name = '22' AND day = '5' AND month = '10' AND year = '2001'"
В результате по времени такой запрос работает так:
Поиск записи: 3 sec.
Поиск записи: 0 sec.
Поиск записи: 1 sec.
Поиск записи: 0 sec.
Поиск записи: 28 sec.
Поиск записи: 3 sec.
Поиск записи: 112 sec.
Поиск записи: 1 sec.
Поиск записи: 2 sec.
Поиск записи: 0 sec.
Поиск записи: 34 sec.
Поиск записи: 11 sec.
Соответственно поиск 1000 записей занимает несколько часов! Никаких update и delete параллельно не ведётся.
При этом mysql совсем не занимает процессор – меньше 1%!!!
Mysql установлена на локальной машине WIN 7.
Вопросы:
1. Что я сделал не так, почему так долго проходит поиск, почему такой разброс по времени и что делать?
2. Почему совсем не занят процессор, как заставить mysql пользоваться для поиска всеми ресурсами ПК?
Неактивен
На такой запрос помог бы составной индекс на связку (first_name,last_name,day,month,year).
Покажите explain без него и с ним.
Неактивен
В дополнение можно отметить, что у вас в таблице числа, а сравниваете со строкой.
По второму вопросу - у вас очевидно полный скан таблицы, поэтому процессор и не загружен.
P.S. На всякий случай, план это результат команды
EXPLAIN ваш запрос;
Неактивен
Индекс от такой большой таблицы может не помещаться в буфер ключей.
Перезапустите сервер, выполните несколько исследуемых запросов, а затем посмотрите статистику использования буфера ключей с помощью запроса
SHOW STATUS like 'key%';
Key_read_requests - это количество обращений к ключу в буфере, Key_reads - количество обращений к ключу на диске, без использования буфера.
Первая величина должна превосходить вторую на несколько порядков.
Если у вас не так, значит, под буфер ключей выделено слишком мало места (посмотреть текущее значение можно запросом SELECT @@key_buffer_size;) и в память они не помещаются, что значительно замедляет работу (возможно, скачки во времени выполнения типа 100 с после 3 с - это и есть случаи, когда соответствующий ключ не загружен в буфер и потому читается с диска).
Выполните запрос SHOW TABLE STATUS LIKE 'work' и посмотрите, чему равна величина Index_length - это и есть общий размер ключей вашей таблицы. Соответственно, чтобы ключи полностью помещались в буфер в памяти, его размер должен быть больше этой величины; плюс еще нужно учесть, что есть другие таблицы и их ключи также будут использовать буфер (впрочем, можно выделить свой буфер ключей под конкретную таблицу).
Неактивен
Привет ребят! Подскажите что делать уже не знаю все перепробовал!!! Установлена Linux ubuntu 14.04 LTS никаких программ ничего нет, она свежая на винте, только я захожу в мозилу смотреть фильмы, фильмы тормозят и загрузка Цп 100%!!! Сегодня купил термопасту, поменял на процессоре, делал все как в ютубе показывают практически одинаково у всех!!! Но все равно цп 100% и комп глючит долго думает, уже менял с ubuntu на xubuntu и ничего не помогает, до этого всего стояла система windows 7 максимальная, думал из за этого тормозит, из за того что не поддерживает системник такие требования от ОС, решил поставить ubuntu. Системные требования: Intel Pentium 4 CPU 3.00Ghz *2, графика intel 915G x86/mmx/sse2. Винт на 80гб. Я не очень шарю в компах, но желаю чтобы помог кто смог сделать мне его. Поставил систему на 32 бита. Что делать?
Неактивен
А какое Ваш вопрос имеет отношение к MySQL? Лучше спросите на форуме Ubuntu.
Неактивен
Дело не в Убунту, дело в компе самом.
Неактивен
KitaecKrg написал:
Дело не в Убунту, дело в компе самом.
Сразу все стало понятно. Вам нужно на форум поддержки компа. К сожалению Вы не указали производителя, поэтому сложно Вас сортировать точно.
Неактивен
Страниц: 1