Я пытаюсь посмотреть, сколько строк я закончил в текущем пакетном скрипте. Однако, когда я пытаюсь подсчитать строки, он зависает бесконечно (в этой таблице встречается около 100 вставок). Таблица составляет около 3 миллионов строк. Вот что я делаю:Как аппроксимировать подсчет строк mysql
select count(*) from my_table where is_done=1
Explain, также выглядит довольно хорошо:
explain select count(*) from my_table where is_done=1
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE mturk_imdbentry ref is_done is_done 1 const 1471833 Using index
Почему это «замок» происходит, предотвращая меня от получения графа? А потом, во-вторых, как бы я приблизил счет?
Скорее всего, все вставки блокируют стол. Документы предлагают использовать MyISAM. См. Http://dev.mysql.com/doc/refman/5.0/en/concurrent-inserts.html – Phil
@Phil спасибо за это. Думаю, что так оно и есть. Являются ли INSERT обычно быстрее в MyISAM, чем InnoDB, или они относительно эквивалентны? – Hockey127
MyISAM, как правило, лучше для чтения, InnoDB для записи: но если у вас есть только одно соединение (а не производственный сервер), это не имеет большого значения. Просто не забудьте обернуть ваши INSERT в транзакции (для InnoDB) –