powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / опрос: обновление статистики путем count(*) в разных серверах
17 сообщений из 17, страница 1 из 1
опрос: обновление статистики путем count(*) в разных серверах
    #36562774
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
привет,

хотел бы уточнить, что во многих серверах при выполнении запроса select count(*) from table обновляется статистика по всем индексам в этой таблице. так это или нет?

особо интересуют mysql, postgres, firebird, db2, derby, h2, a также mssql и oracle.

пишу серверо-независимый софт и не хочется запускать спец-команду для каждого сервера; а некоторые периодически начинают выдумывать дурацкие планы запросов.

спасибо
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562803
MsDatabaseru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
никто не парится и ты не парься
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562804
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
firebird - нет, статистика по индексам в firebird и interbase обновляется только по set statistics <index_name>.
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562858
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feddхотел бы уточнить, что во многих серверах при выполнении запроса select count(*) from table обновляется статистика по всем индексам в этой таблице. так это или нет? Я сильно сомневаюсь, что при чтении таблицы (или минимального покрывающего индекса) кто-то будет читать ещё и все остальные индексы.
Разве что читается действительно таблица, а не индекс, и собирается статистика только по значениям полей.
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562865
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvfirebird - нет, статистика по индексам в firebird и interbase обновляется только по set statistics <index_name>.спасибо!

all: если несложно, для других серверов, если они уже у вас в памяти или недолго искать, можно тоже написать команды обновления статистики (лучше не всей базы, а потаблично/поиндексно)
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562873
правильный емайл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в оракел точно не так
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562920
Ихтиандр
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
с фигали загуляли?
ИМХО, бред в приложении к любой нормальной СУБД.
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562922
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В Oracle статистика собирается с пом. пакета dbms_stats (и по таблицам, и по индексам)
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562938
Фотография fedd
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ихтиандрс фигали загуляли?
ИМХО, бред в приложении к любой нормальной СУБД.я уже понял, и собираю команды для обновления статистики
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562968
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в постгресе ANALYZE
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36562976
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
feddя уже понял, и собираю команды для обновления статистики

Как правило, обновлять статистику на сервере - это задача DBA, а не приложения.
А DBA это запускает каким-нибудь джобом, только в редких случаях ручками...
Кроме того, критичность сбора статистики на различных серверах м.б. различной. Например, Oracle считает, что если в таблице изменилось меньше 10% данных, то статистика вполне пригодна. Тут ведь дело еще упирается в призводительность, сбор статистики жрет ресурсы сервера. Так что, насчет серверо-независимости подобной вещи - сомнительно...
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36563013
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
В MS SQL обновляется при помощи оператора UPDATE STATISTICS.
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36563334
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркВ MS SQL обновляется при помощи оператора UPDATE STATISTICS.Если чтоит параметр AUTO_UPDATE_STATISTICS, то обновляется при выполнении запроса в том случае, если сервер сочтёт её устаревшей (синхронно или асинхронно)
http://msdn.microsoft.com/ru-ru/library/ms190397.aspx
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36563370
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55В Oracle статистика собирается с пом. пакета dbms_stats (и по таблицам, и по индексам)Тут вроде написано, что в Оракле тоже автоматически собирается по умолчанию.
http://download.oracle.com/docs/cd/E11882_01/server.112/e10595/tables005.htm#i1006473
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36563405
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Le Peacetru55В Oracle статистика собирается с пом. пакета dbms_stats (и по таблицам, и по индексам)Тут вроде написано, что в Оракле тоже автоматически собирается по умолчанию.

Просто при создании базы через DBCA (т.е. через визард), начиная с Ora 10, автоматом создается job, который отвечает за сбор статистики по всей БД (раньше этот job приходилось создавать ручками).
Однако это все относительно:
- база может создаваться ручками
- DBA может из тех или иных соображений отключить этот job, и/или сделать свой (например, некоторые места в OeBS плохо работают при собранной статистике)
- job работает, как правило, ночью (в момент наименьшей загрузки БД). Если мы днем произведем какую-нибудь массовую заливку, то надо будет запустить сбор статистики вручную (по всей или части БД), иначе она до след. ночи будет неактуальна
И т.д.
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36563418
Фотография Le Peace
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru55,

то есть одним махом собирается статистика по всей бд?
То есть если статистику нужно обновлять чаще либо нет времени наименьшей нагрузки, то автоматический сбор уже не получится сделать?
...
Рейтинг: 0 / 0
опрос: обновление статистики путем count(*) в разных серверах
    #36563452
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Le Peace
то есть одним махом собирается статистика по всей бд?
То есть если статистику нужно обновлять чаще либо нет времени наименьшей нагрузки, то автоматический сбор уже не получится сделать?

Угу, умалчиваемый job такой, т.е. статистика по всей БД. Другое дело, что за время работы БД отслеживаются изменения и статистика собирается только по тем таблицам, где с последнего сбора изменилось больше 10% данных (до Ora 10 такой мониторинг включался вручную).
Но если мы хотим по разным частям БД собирать статистику в разное время, значит мы уже должны написать запуск нескольких job в разное время (хотя написание тут не сильно большое, ибо пакет для сбора статистики все равно 1 - dbms_stats)
...
Рейтинг: 0 / 0
17 сообщений из 17, страница 1 из 1
Форумы / Сравнение СУБД [игнор отключен] [закрыт для гостей] / опрос: обновление статистики путем count(*) в разных серверах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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