![]() |
Модераторы: LSD |
![]() ![]() ![]() |
|
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
Что передается между клиентом и сервером и что выполняется на серваке при вызове оператора SELECT.
|
|||
|
||||
ZZZubec |
|
|||
Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 12.9.2008 Репутация: нет Всего: нет |
Ставишь снифер и смотриш что идет на порту 3306 (MySQL)
|
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
На серваке делаются все вычисления и сортировки, а передаётся только результат.... хотя всё зависит от драйвера.
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
мне интересна сама идеалогия (я использую FirBird но думаю остальны БД работают по схожему принципу).
Мне кажется при выполнении Select, по сути передаются сам запрос к серверу и сигнал что оператор отработал к клиенту. А клиент по необходимости по команадам Next, Prev запрашивает необходимые записи из созданного набора. Тогда, по идеи на сервере для этого создается некая таблица по которой он отправляет данные клиенту по необходимости. Я не знаю насколько это близко к реальному. Но абсолютно не ясно как работает это таблица если результат запроса содержит большое кол-во записей, сопоставимых с размерами ОП? |
|||
|
||||
LSD |
|
|||
![]() Leprechaun Software Developer ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 15718 Регистрация: 24.3.2004 Где: Dublin Репутация: 24 Всего: 538 |
В принципе это зависит от реализации. Например сервер может сразу отдать первые N строк клиенту. Но вообщем и целом, это так. Опять же зависит от реализации, но обычно сервер использует некое временное дисковое пространство для хранения курсоров. -------------------- Disclaimer: this post contains explicit depictions of personal opinion. So, if it sounds sarcastic, don't take it seriously. If it sounds dangerous, do not try this at home or at all. And if it offends you, just don't read it. |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
Т.е. если я делаю select * from table в которой 1.000.000 записей и перекачаю с сервера только первую запись, то будет ли сервер (класса FireBird, MySQL, MSSQL, Oracle) бегать по всем строкам таблицы, что бы создать весь набор и если нет? Могут ли быть использованы алгоритмы вроде того, что используются для поиска в Windows, т.е хранятся критерии выборки и указатель на текущую запись?
|
|||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
За всех не могу говорить. Могу сказать только за оракл. Именно для такого запроса, оракл может выдать фетч до того как закончен скан. Но если к запросу добавить order by по не индексированному полю, то выдать отклик до того, как закончится скан, а следом сортировка, будет невозможно. -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
pompei |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 7.9.2007 Репутация: нет Всего: 6 |
Любая "нормальная" СУБД (типа MySQL, PostgreSQL, Oracle, FireBird, ...) делает всё возможное чтобы уменьшить затраты.
Есть ещё такая фича, которая называется версионность - это когда вы делаете запрос на чтение, а БД запоминает момент времени запроса, и когда во время запроса кто-то чужой модифицирует БД, то СУБД сохраняет оригинальные значения полей (чтобы их вам дать, если надо будет) до тех пор, пока не будет до конца выполнен ваш запрос - т.е. получается, что когда вы обращаетесь к БД, для вас создаётся отдельная ваша личная неизменная версия БД на момент запроса. Это сообщение отредактировал(а) pompei - 5.5.2009, 05:26 --------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап. |
|||
|
||||
RomanEEP |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 424 Регистрация: 18.5.2006 Где: Коломна Репутация: нет Всего: 8 |
||||
|
||||
Zloxa |
|
|||
![]() Чо? ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 3473 Регистрация: 12.9.2008 Репутация: 11 Всего: 161 |
нет -------------------- Достоверно известно, что 89% людей доверяют статистике взятой с потолка ![]() |
|||
|
||||
nichnikov |
|
|||
![]() Новичок Профиль Группа: Участник Сообщений: 8 Регистрация: 14.5.2009 Репутация: нет Всего: -1 |
ну да,смотря какой клиент. Если за клиента взять классы работы скриптовых языков,то реализация перехода по записям будет представлена функционалом |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Общие вопросы по базам данных" | |
|
Данный форум предназначен для обсуждения вопросов о базах данных не попадающих под тематику других форумов:
Данный форум не предназначен для:
Если вы не соблюдаете эти правила, не удивляйтесь потом не найдя свою тему/сообщение.
Полезные советы: Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, LSD, Zloxa. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | СУБД, общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |