Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Cash VS Sql query - что быстрее работает и меньше грузит сервер / 25 сообщений из 33, страница 1 из 2
29.02.2012, 06:04:09
    #37683454
avolik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Доброй ночи.

Скажите, что предпочтительнее использовать Sql-запросы к базе, или Cash?

Пример.
Новостной сайт, или сайт контента со статьями. Статей (страниц) до 500, или до 1000, или свыше 1000.

Для вывода тайтлов-ссылок последних 300 статей на главной странице лучше использовать запрос к БД, или вытягивать из кеша? А отдельную страницу?
Имеется в виду каждый раз дергать базу, или первый раз дернуть все, что есть в базе и поместить в кеш, а потом все из кеша дергать.

Что предпочтительнее юзать?
...
Рейтинг: 0 / 0
29.02.2012, 09:09:09
    #37683526
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Моё мнение:
1. Пишете хороший запрос;
2. Если надо, то оптимизируете его;
3. Если оптимизировать дальше некуда, а надо, тогда и задумывайтесь про Cash и другие способы.

Тем более кэш может быть и на уровне БД :)
...
Рейтинг: 0 / 0
29.02.2012, 09:19:44
    #37683535
brainproof
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
быстрее взять из кеша но жертвуя памятью
я так понимаю вы без орм?
можно сделать класс который сам будет кешировать по ключу Sql-запросы + параметры при обращение к бд
...
Рейтинг: 0 / 0
29.02.2012, 10:46:34
    #37683681
SanSYS
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Часто используемые данные однозначно кешируйте, не обязательно в память, можно и в файловую систему
Проведите измерения на 1000 чтений тысяч страниц с кешированием и без (надеюсь в каком нить базовом классе кеширование быстро врубите) и тогда уже решайте что для вас лучше, всее зависит от специфики реализации, имхо
...
Рейтинг: 0 / 0
29.02.2012, 22:22:37
    #37685188
avolik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Я склоняюсь к идее вытянуть одним махом всю базу в кеш и каждый раз вытягивать из кеша. Меня что больше интересует, так это то, что в все данные в кеше хранятся в типе Object, а каждый раз вытягивать их и приводить к соответствующим типам - насколько быстро это?
...
Рейтинг: 0 / 0
01.03.2012, 11:54:38
    #37685981
Парамон
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
avolikЯ склоняюсь к идее вытянуть одним махом всю базу в кеш и каждый раз вытягивать из кеша.
Интересное решение ).
Вопрос, на сайте уже есть посещаемость?
...
Рейтинг: 0 / 0
01.03.2012, 12:03:23
    #37686004
rudevelop
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
avolik, а вы не рассматривали вариант кеширования самой новостной страницы? То есть кешировать не запрос в базу, а сам html - код, возвращаемый пользователю?
...
Рейтинг: 0 / 0
01.03.2012, 15:23:59
    #37686515
avolik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Да, посещаемость около 2000 уникальных в сутки.
Я попробовал не само кеширование страниц (пока не разобрался с этим еще), а в объект кеша загнал всю базу данных (200 записей из таблицы статей). И когда пользователь запрашивает конкретную статью, я ищу её не в БД, а в кеше через приведение объекта кеша к нужному типу List<Article> и после этого поиском лямбда выражением требуемой статьи в списке List<Article>.Find(art => art.Id == paramInQueryString).

Особого выигрыша по скорости загрузки сайта не получил. Возможно что я не знаю, пока еще только учусь. Я сеошник и программирование далось мне не без трудностей. Но вроде сайт пока на плаву. Ожидается посещаемость до 5000 в течение года-полтора поднять. Вот тогда я реально, мне кажется, смогу выяснить что круче - кеширование, или прямой запрос к БД.
...
Рейтинг: 0 / 0
01.03.2012, 15:26:12
    #37686520
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Прямой запрос.
...
Рейтинг: 0 / 0
01.03.2012, 21:39:09
    #37687183
avolik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
А можно поподробнее?!
...
Рейтинг: 0 / 0
01.03.2012, 23:34:40
    #37687271
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
avolikВот тогда я реально, мне кажется, смогу выяснить что круче - кеширование, или прямой запрос к БД.Вы для начала реализуйте кэширование, а уже потом выясняйте :)
Кэш - это промежуточный буфер с быстрым доступом.

Вот это:avolikList<Article>.Find(art => art.Id == paramInQueryString)не быстрый доступ однако, а поиск по буферу :)
...
Рейтинг: 0 / 0
02.03.2012, 00:01:01
    #37687290
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
skyANA,

И где этот буффер хранится? В базе, в файловой системе, или (не дай Б-г) в ОЗУ?
...
Рейтинг: 0 / 0
02.03.2012, 00:12:24
    #37687303
avolik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Блин, я вообще новичек в программировании и в aSP.NET в частности.

1. Чем плох такой вариант: все, что в БД залить в Cash["someKey"] и при каждом заходе на сайт искать статью не в БД, а в кеше: (Cash["someKey"] as List<Article>).Find(art => art.Id == queryStringId) ?

2. Почему в ОЗУ нельзя? И что нельзя?

Растолкуйте ,я почти полный ноль.
...
Рейтинг: 0 / 0
02.03.2012, 00:20:53
    #37687313
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
avolik...искать статью не в БД, а в кеше...
Если кеш у Вас в ОЗУ, то там и ищите. Имхо, будет побыстрее, чем в базе. Это если статей у Вас пара-тройка, и которые очень редко изменяются. Вообще-то, кеш совсем не для этого предназначен.
ПС. Насчёт новичка. Если Вы - новичёк, этот форум не для Вас. Здесь профессиональный форум.
...
Рейтинг: 0 / 0
02.03.2012, 00:24:26
    #37687317
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
avolik,

1. сколько времени занимает выборка тайтлов последних 300 статей из БД?
2. сколько времени занимает выборка статьи по идентификатору из БД?
3. какого результата Вы хотите добиться?
...
Рейтинг: 0 / 0
02.03.2012, 00:26:59
    #37687321
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Смотрю на цифири в топике и не вижу смысла в кэшировании :)
...
Рейтинг: 0 / 0
02.03.2012, 00:31:14
    #37687326
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
skyANAСмотрю на цифири в топике и не вижу смысла в кэшировании :)
А что такое кеширование? Кто-то придумал какую-то волшебную штучку из которой данные получаются быстрее, чем из реляционной базы MS SQL, например?
...
Рейтинг: 0 / 0
02.03.2012, 00:36:30
    #37687336
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
avolik1. Чем плох такой вариант: все, что в БД залить в Cash["someKey"] и при каждом заходе на сайт искать статью не в БД, а в кеше: (Cash["someKey"] as List<Article>).Find(art => art.Id == queryStringId) ?
Зависит от ситуации. Если данных мало и они меняются редко, то подобное кеширование пойдет на пользу. Только конструкция Find(art => art.Id == queryStringId) мало эффективна т.к. она должна перебирать все элементы по очереди пока не найдет нужный. В качестве альернативы можно использовать Dictionary<int,Arcticle> - то есть ключом является id статьи. Или же можно реализовать двоичный поиск , не забыв предварительно отсортировать список статей по id (лучше это сделать средствами SQL).

Не забывай что данные в кеше могут устареть т.к. данные в БД могут измениться. И надо или отслеживать изменения в БД или кешировать данные только на определенный период. Все зависит от твоей задачи.

Посмотри также в сторону кеширования страниц целиком с помощью директивы @ OutputCache . Главное ее достоинство что не надо писать никакого кода.

avolik2. Почему в ОЗУ нельзя? И что нельзя?
Можно, главное не перебарщивать. Памяти хоть и много, но она не бесконечна.

P.S. [режим зануды вкл]Cash это наличные деньги. Кеш на английском это cache.[режим зануды выкл]
...
Рейтинг: 0 / 0
02.03.2012, 00:37:36
    #37687340
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
ShSerge, ну к примеру промежуточное хранение результата выборки данных из стапицот таблиц :)
...
Рейтинг: 0 / 0
02.03.2012, 00:38:40
    #37687341
bazile
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
ShSergeПС. Насчёт новичка. Если Вы - новичёк, этот форум не для Вас. Здесь профессиональный форум.
Это где такое написано?
...
Рейтинг: 0 / 0
02.03.2012, 00:45:54
    #37687348
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
bazileShSergeПС. Насчёт новичка. Если Вы - новичёк, этот форум не для Вас. Здесь профессиональный форум.
Это где такое написано?
Это я Вам говорю. Верьте мне. Но не принимайте близко. Я такое говорю всем "новичкам". :)
...
Рейтинг: 0 / 0
02.03.2012, 00:49:46
    #37687351
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
skyANAShSerge, ну к примеру промежуточное хранение результата выборки данных из стапицот таблиц :)
Выборка и стапицот, определённо будет хуже работать, чем SQL-запрос. Особенно, если таблички правильно проиндексированы и запросы правильные (с джойнами по индексным полям).
...
Рейтинг: 0 / 0
02.03.2012, 00:58:03
    #37687356
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
ShSergeВыборка и стапицот, определённо будет хуже работать, чем SQL-запрос. Особенно, если таблички правильно проиндексированы и запросы правильные (с джойнами по индексным полям).Ничего не понял :) Выборка из стапицот - это и есть SQL-запрос. Что хуже чего будет работать и почему?
...
Рейтинг: 0 / 0
02.03.2012, 02:07:52
    #37687410
iConst
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
ShSerge.... Если Вы - новичёк, этот форум не для Вас. Здесь профессиональный форум.о_О
...
Рейтинг: 0 / 0
02.03.2012, 02:58:43
    #37687438
avolik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Cash VS Sql query - что быстрее работает и меньше грузит сервер
Конкретнее:

1. Таблица в БД одна и хранит всю инфу о статье.
2. Количество записей 2000.
3. Статья не изменяется никогда, нет даже комментариев к ней.
4. При добавлении новой статьи кеш обновляется.

При таком раскладе оправдано ли ручное кеширование?

Кто-то может со всей ответственностью ответить "ДА", или "НЕТ" ?!
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Cash VS Sql query - что быстрее работает и меньше грузит сервер / 25 сообщений из 33, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]