SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 24.05.2010 16:43:44

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

выборка из большой таблицы, тип myIsam.

Доброго времени суток!

Хочу спросить один момент относительно таблиц типа myIsam, когда в таблице очень большое количество записей (больше ста миллионов), (таблица без индексов, без ключей).

Есть таблица, в которую постоянно, ежесекундно дописыватся данные. В то же время к ней идут постоянно запросы (запросы прочитывают всю таблицу).
В то же блокировки (каковая, как я понял, была бы в случае InnoDB) не происходит - и запросы отрабатываются и данные пишутся без потерь. Не могли бы Гуру сказать пару слов насчет механизма разделения ресурсов на такие таблицу - там "частичные" блокировки происходят или что-то еще? Чтобы понять, можно ли так вообще делать или не стоит.

Заранее спасибо!


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#2 24.05.2010 17:01:42

rgbeast
Администратор
MySQL Authorized Developer and DBA
Откуда: Москва
Зарегистрирован: 21.01.2007
Сообщений: 3880

Re: выборка из большой таблицы, тип myIsam.

Посмотрите тему про concurrent_insert, http://sqlinfo.ru/forum/viewtopic.php?id=639

Неактивен

 

#3 08.06.2010 01:49:17

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: выборка из большой таблицы, тип myIsam.

Спасибо за ответ, посмотрел. Если правильно понял, то установка concurent_insert в 2 может улучшать ситуацию (по сравнению с установкой в 1) лишь если дыры есть в таблице, а при отсутствии дыр изменений не  будет, верно? Просто у меня из таблиц, про которые я сейчас пишу данные вообще не удаляются и не меняются update'ами. На сервере переменная глобально установлена в 1.

Отредактированно deadka (08.06.2010 09:53:19)


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 08.06.2010 02:18:30

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: выборка из большой таблицы, тип myIsam.

deadka написал:

Если правильно понял, то установка concurent_insert в 2 может улучшать ситуацию (по сравнению с установкой в 1) лишь если дыры есть в таблице, а при отсутствии дыр изменений не  будет, верно?

Да.

Раз у вас таблица без индексов, то можно посоветовать сделать строки фиксированной длины. В этом случае запросы типа LIMIT X,Y будут работать быстрее.

deadka написал:

Такой еще вопрос администратам форума (сори за офтоп, когда ответите подредактирую тему и сотру его), если можете ответить на него -  когда Вы начнете стирать старые темы? А то многие темы форума сейчас в избранном находятся, часто использую как справку ), не хотелось бы потерять их ), поэтому и спрашиваю ).

Никогда. Only knowledge will I save.

Неактивен

 

#5 08.06.2010 10:22:30

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: выборка из большой таблицы, тип myIsam.

vasya написал:

deadka написал:

Если правильно понял, то установка concurent_insert в 2 может улучшать ситуацию (по сравнению с установкой в 1) лишь если дыры есть в таблице, а при отсутствии дыр изменений не  будет, верно?

Да.

Раз у вас таблица без индексов, то можно посоветовать сделать строки фиксированной длины. В этом случае запросы типа LIMIT X,Y будут работать быстрее.

Скажите, я правильно понимаю, что строка фиксированной длины - это char(n) вместо varchar(n)?

А то у меня в таблице только числовые поля различных размеров  - 4-х байтные, 2-х байтные и однобайтные беззнаковые целые (еще два поля типа datetime), вот и не соображу, можно ли применить рекомендацию ).

Vasya, скажите, а за счет чего запросы с лимитом будут быстрее работать? Ведь, как я понимаю, если в таблице нет индексов, а в запросе есть условие where, то все равно Full Tables Scan'а не избежать?

P. S. Спасибо за  "Блокировки в mysql" ( http://webew.ru/articles/1383.webew), многое объяснило.


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#6 08.06.2010 13:58:19

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: выборка из большой таблицы, тип myIsam.

LIMIT может работать быстрее, если нет WHERE (например, «вытянуть все строки с
50 по 70ю») — MySQL сразу будет знать, откуда и докуда читать. Если есть WHERE,
то, конечно, всё это сводится на нет.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson