Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 кеш запросов  [new]
Alexey Arnautov
Member

Откуда: Moscow, Russia
Сообщений: 110
Предположим, есть table_ из 4х полей.
id long,
aa varchar(255),
bb varchar(255),
cc image.

В поле cc хранится, например данные, размером 1-2Мб.

Равносильны ли с точки зрения кеша выборки

select id,aa,bb from table_


и

select * from table_


?

Т.е. при первом запросе, будут ли выбираться (в кеш) поля cc и возвращаться только id, aa, bb? Т.е. Последующая выборка (после первого select)
select * from table_ будет выполняться быстрее, чем без первого select?
14 окт 03, 11:28    [375608]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
Alexey Arnautov
Member

Откуда: Moscow, Russia
Сообщений: 110
может где почитать про это можно? Можно на engl.
14 окт 03, 11:28    [375610]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
другими словами, чем объяснить тормознутость
select * from table_
?
- большим размером данных image, кэши запросов тут почти не при чем

небольшую помощь может оказать увеличение размера пакета tds до максимума
14 окт 03, 11:40    [375640]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
Alexey Arnautov
Member

Откуда: Moscow, Russia
Сообщений: 110
не совсем. Тормознутость - она понятна. Есть 2 select:

select id from table_
select cc from table_

Будет ли второй select выполняться быстрее, при наличии первого. Суть не в том, что второй тормозит, а в том, что например, если я делаю запрос select id from table_ , то попадают ли данные из поля cc при этом в кеш? Т.е. при цикле в 1000 запросов select id from table_, умрет ли кеш от того, что в него попадают и данные из cc? Или он будет настолько же эффективен, как и для таблицы без поля cc.

Т.е. для таблицы table_ (id varchar(255), aa varchar(255), bb varchar(255))
14 окт 03, 11:54    [375663]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Т.к. BLOB поля храняться отдельно, то соответсвенно и страницы данных, помещаемые в кэш у них будут разными.
Поэтому после select id,aa,bb from table_ запрос select * from table_ может взять id,aa,bb уже из кэша, если они там конечно остались.
14 окт 03, 11:57    [375665]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
iSestrin
Member

Откуда: Новосибирск
Сообщений: 3811
нет, конечно не попадают, тем более, что image вообще на других страницах лежат

потом еще, даже если бы попадали, то любой кэш обязательно обладает свойством вытеснения старых данных новыми...
14 окт 03, 12:00    [375669]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
Alexey Arnautov
Member

Откуда: Moscow, Russia
Сообщений: 110
2 Glory:
автор писал:
Поэтому после select id,aa,bb from table_ запрос select * from table_ может взять id,aa,bb уже из кэша, если они там конечно остались.

Это понятно, сформулируем по другому. Попадут ли данные из cc в кеш, при выборке select id from table_, при условии, что
table_ (id varchar, cc image)

Я, честно говоря, думаю, что нет. Сейчас программку накатаю и потестю. О результатах сообщу.
14 окт 03, 12:19    [375711]     Ответить | Цитировать Сообщить модератору
 Re: кеш запросов  [new]
Glory
Member

Откуда:
Сообщений: 104760
Значит так.
Данные размещаются на страницах. Страница - это минимум одна целая запись, за исключением BLOB полей. BLOB поля храняться в отдельных страницах данных. В кэш страница попадает целиком.
Поэтому при select id from table_ в кеш попадут только страницы, содержащие id.
Все.
14 окт 03, 12:27    [375728]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить