Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Глобальный select

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: select * from
laggerok
Отправлено: 28 Мая, 2012 - 16:34:34
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




К чему приводят запросы типа select * from <tablename>, если в таблице миллионы записей, кроме того, что выведет всю таблицу, это создаст нагрузку на сервер и он будет относительно догло дуплить?
 
 Top
Alho
Отправлено: 28 Мая, 2012 - 16:41:28
Post Id



Посетитель


Покинул форум
Сообщений всего: 322
Дата рег-ции: Апр. 2012  


Помог: 11 раз(а)




Долгому исполнению запроса, невозможностью в это время использовать бд другими юзерами, возможны падения.

Всегда нужно выбирать лишь нужные поля и и ограничивать их кол-во лимитом.

Эти неприятности начинаются уже на сотнях тысяч, про миллионы - молчу, в моей доверенности такого пока не было.

(Отредактировано автором: 28 Мая, 2012 - 16:42:27)

 
 Top
tato
Отправлено: 28 Мая, 2012 - 16:46:12
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Будет так называемый хайлоад - т.е. большая нагрузка, поведение базы зависит от возможностей сервера, но в суровых реалях при миллионах записей база отвалится с вероятностью 99.99%.

======

Наврал хайлода не будет, просто все отвалится...

(Отредактировано автором: 28 Мая, 2012 - 16:46:56)



-----
просто ?: сложно
 
 Top
laggerok
Отправлено: 28 Мая, 2012 - 16:54:49
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Цитата:
невозможностью в это время использовать бд другими юзерами


А откуда такая информация?
 
 Top
tato
Отправлено: 28 Мая, 2012 - 17:00:52
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)




Это оффициальная инфа, в завизимости от типа mysql бд (myisam || innodb) блакируется или вся таблица или конкретные поля.


-----
просто ?: сложно
 
 Top
laggerok
Отправлено: 28 Мая, 2012 - 17:02:35
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Цитата:
Это оффициальная инфа, в завизимости от типа mysql бд (myisam || innodb) блакируется или вся таблица или конкретные поля.


Можно ссылочку почитать?
 
 Top
tato
Отправлено: 28 Мая, 2012 - 17:04:31
Post Id



Посетитель


Покинул форум
Сообщений всего: 468
Дата рег-ции: Сент. 2011  
Откуда: Владивосток


Помог: 8 раз(а)






-----
просто ?: сложно
 
 Top
IronHawk
Отправлено: 28 Мая, 2012 - 17:06:18
Post Id



Новичок


Покинул форум
Сообщений всего: 61
Дата рег-ции: Авг. 2011  


Помог: 1 раз(а)




Есть такой опыт, так как в распоряжении есть парочка баз в которых есть баблицы с 1-2 млн. записей.
Риск отказа СУБД велик при:
- некорректной архитектуре БД
- отсутствии оптимальности запросов к таблицам БД
 
 Top
laggerok
Отправлено: 28 Мая, 2012 - 17:30:00
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Я еще со своей стороны узнал и в итоге имеет такое:

- нагрузка на сервек (или вообще крах, если оч все плохо);
- возможно, блокировка некоторых рядков, если это InnoDB;
- обновление кешей путем втуливания туда новой инфы с селекта;
- создание очереди запросов к данной таблице;
 
 Top
Мелкий Супермодератор
Отправлено: 28 Мая, 2012 - 19:54:14
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Ох. причёсываю толпу народа и неточностей.

laggerok пишет:
К чему приводят запросы типа select * from <tablename>

Будет вычитывать всю таблицу. Является ли это проблемой - зависит от объёма данных. И необходимой скорости отклика.
Если памяти достаточно и есть в этом реальная необходимость (чего мне не придумать, работу с данными на базу вешать и надо) - можно читать. Запрос элементарен, данные вовсе линейным чтением поднимаются.
На моей убитой виртуалке 3 ляма записей (около 250мб) обходится в цикле за 15 секунд времени. Замедление других запросов незаметно.
На 4 лямах - кончилась клиентская память, запрос отвалился.

tato пишет:
в суровых реалях при миллионах записей база отвалится с вероятностью 99.99%.

База отработает спокойно. А вот на клиенте память кончится.

tato пишет:
в завизимости от типа mysql бд (myisam || innodb) блакируется или вся таблица или конкретные поля.

Блокировки при изменении данных, для сохранения консистентности.
Параллельные 100% чтения - задача самая простая из работы планировщика СУБД.

Alho пишет:
и ограничивать их кол-во лимитом.

Помним о том, что limit 100000, 200000 всё равно прочитает 200 тысяч записей?

IronHawk пишет:
Есть такой опыт, так как в распоряжении есть парочка баз в которых есть баблицы с 1-2 млн. записей.

Всего лишь?
Тестовое задание ко мне на работу требует нормальной работы на базе в 2 млн пользователей. Связанная тестовая таблица у меня вышла 50млн записей, суммарно 2гб объём. (кстати, Питер, открыта вакансия)

laggerok пишет:
- нагрузка на сервек (или вообще крах, если оч все плохо);

Очень сложно обрушить сервер таким запросом. Вот если попробовать переджойнить с чем-нибудь - то да, nested loop очень печален на таких объёмах.

laggerok пишет:
- обновление кешей путем втуливания туда новой инфы с селекта;

Само собой. Если это постоянная нагрузка - повод подумать об отключении кэша запросов и увеличении памяти машине.

И ещё раз обращу внимание - сильно сомневаюсь, что вам нужен на клиенте (php то есть) весь этот массив данных. Наверняка же как-то группировать и агрегировать собрались.


-----
PostgreSQL DBA
 
 Top
laggerok
Отправлено: 31 Мая, 2012 - 11:06:56
Post Id


Новичок


Покинул форум
Сообщений всего: 46
Дата рег-ции: Март 2012  


Помог: 0 раз(а)




Еще в добавок: есть такой "страшний" тип данных как BLOB. Извращенцы, например, могуг заливать в поля, добрые фотки или картинки в этом типе данных.

А вообще это была не задача. Тут ослу понятно, что такого делать нельзя, просто интересовали практические последствия таких запросов...ну кроме увольнения с работы... Радость
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« SQL и Архитектура БД »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB