powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перестроение индексов в T-SQL
25 сообщений из 51, страница 2 из 3
Перестроение индексов в T-SQL
    #39460008
IvanIvan48
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И еще вопрос по шринку, есть ли смысл его включать в обслуживание, если майкрософт не советует это делать, т.е. ну понятно, если прям критический вопрос в плане места, то придется в любом случае, но вот что мелкософты пишут:
авторРекомендации
Обратите внимание на следующие сведения при планировании сжатия базы данных.
Наибольший эффект от операции сжатия достигается при ее применении после операции, создающей много неиспользуемого пространства, например после усечения таблицы или удаления таблицы.
Большинству баз данных требуется некоторое свободное пространство для выполнения обычных ежедневных операций. Если сжатие базы данных производится регулярно, но она снова увеличивается в размерах, это означает, что место, освобожденное при сжатии, необходимо для нормальной работы. В таких случаях повторное сжатие базы данных бессмысленно.
Операция сжатия не избавляет от фрагментации индексов в базе данных и обычно приводит к еще более сильной фрагментации. Это еще одна причина, по которой не стоит выполнять регулярное сжатие базы данных.
Не следует устанавливать параметр базы данных AUTO_SHRINK в значение ON без достаточных на то оснований.
поэтому вот даже хз) индексы типа сильнее фрагментируются.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460019
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не надо делать шринк.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460038
Фотография alexeyvg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IvanIvan48И еще вопрос по шринку, есть ли смысл его включать в обслуживание, если майкрософт не советует это делать, т.е. ну понятно, если прям критический вопрос в плане места, то придется в любом случае, но вот что мелкософты пишут:Всё правильно пишут, не шринкуйте. Только как аварийная команда, при особых ситуациях, когда из за неисправности занято слишком много места.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460240
uaggsterчеловек_ниоткуда1) проверка целостности БД
Не нужна если БД на СХД или RAID с проверкой целостности.
Гм... Это как? Что означает "с проверкой целостности"?
RAID5/1/10 и т.д.?
Так они могут писать "мимо" - только в путь! Какая-нибудь бяка в драйвере контроллера, и всё, понеслось!
(Дада. Я люблю сервера DEPO, куда деваться то).
человек_ниоткуда Не поможет если после проверки булет выполнено резервное копирование БД.
Ну, первым шагом джоба DBCC CHECKDB, вторым (если не обломилось на первом шаге) - полный бэкап (ну, например).
Если база, скажем так, сотня-другая гигабайт - то всё за вполне себе небольшое время завершается.
Почему нет то?

Законно...
Мой косяк что бекап после. Сначала бекап, потом checkdb. Ибо лучше сделать бекап и ждать CHECKDB если всё упадёт до бекапа, то будет нехорошо.
Если в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. Я, признаться, не помню как работает механизм checksum страницы: конкретно не знаю проверяет SQL checksum в момент сброса буффера на диск или нет. Ибо если проверяет, то получается, в момент когда произойдёт ошибка - база и так в suspend уйдёт; получается что вообще нет смысла checkdb делать, за исключением случая когда диск такой конченый, что буквально сыпется от вращения блина. А если не проверяет (что я считаю вполне правильно), то CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами.
CHECKDB это полный скан всей базы, т.е. как-никак да диск это напрягает - и ресурс его сокращает.

тогда так:
Можно, если есть время на выполнение этой процедуры. Иначе менять дисковую систему на обеспечивающую большую надёжность.


uaggsterчеловек_ниоткуда Не очень нужна для GPT-партиций (вопрос спорный).

Почему? Объясните, правда не понимаю!

GPT как я понял по описанию в себе имеет механизм контроля целостности данных. Т.е. она поймёт, если в неё что-то нитак записалось сама. Но, опять же, вопрос спорный - мож я что-то в мануале перекурил ;) буду рад достоверной инфе, если неправ.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460251
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
человек_ниоткудаЕсли в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. Я, признаться, не помню как работает механизм checksum страницы: конкретно не знаю проверяет SQL checksum в момент сброса буффера на диск или нет. Ибо если проверяет, то получается, в момент когда произойдёт ошибка - база и так в suspend уйдёт; получается что вообще нет смысла checkdb делать, за исключением случая когда диск такой конченый, что буквально сыпется от вращения блина. А если не проверяет (что я считаю вполне правильно), то CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами.

каша полнейшая.
checksum/tornpage проверяется при чтении, при записи он считается и записывается.
поэтому страницы с битыми checksum-ами выявляются при чтении.
только вот чекдб это отнюдь не "просто чтение всего".
вам уже намекали, что база это не просто куча правильно или неправильно записанных байтов,
это хранилище тех же индексов, где вообще-то каждая страница "знает свое место",
за какой страницей она идет логически, и это, например, не интересует никакой RAID.
и даже если вы делаете бэкапы с опцией checksum, и потом успешно из них восстанавливаетесь,
это нисколько не гарантия небитости базы.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460259
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
A SQL Server DBA myth a day: (27/30) use BACKUP WITH CHECKSUM to replace DBCC CHECKDB

RandalLastly, and most insidiously, relying solely on BACKUP … WITH CHECKSUM leaves you susceptible to in-memory corruptions. If a bad memory chip, badly-written XP, or other rogue Windows process corrupts a SQL Server data file page in memory, and then it gets written to disk, you've got a corrupt page with a valid checksum – and nothing will catch that except DBCC CHECKDB.

Bottom line – you can't avoid running consistency checks. If you're having trouble, take a look at my old blog post CHECKDB From Every Angle: Consistency Checking Options for a VLDB.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460294
IvanIvan481) проверяю целостность БД
Если хочешь и есть время.

IvanIvan482) обновляю статистику
ДА! И да: делай sp_updatestats. Для начала этого достаточно. Раз в два часа.

IvanIvan483) делаю шринк
Только transaction log (ldf).

IvanIvan484) бэкаплю
так?

Нет! :) Бекапишь сразу после CHECKDB. Или CHECKDB перед бекапом.
Т.е. (2) - (3) - (1) - (4) или (1) - (4) - (2) - (3)
IvanIvan48еще по t-sql
тут все верно по скриптам или как-то не так? а то sql сказал что он мол не отвечает за последствия предоставленного им кода)))

IvanIvan481) проверяю целостность БД
/chesk.sql
USE [mytest001]
GO
DBCC CHECKDB(N'mytest001') WITH NO_INFOMSGS

Норм

IvanIvan482) обновляю статистику
/stat.sql
use [mybase123]
GO
UPDATE STATISTICS [dbo].[Table_1]
WITH FULLSCAN

Не совсем. Делай через sp_updatestats раз в два часа.


IvanIvan483)
/shrink.sql
USE [mytest001]
GO
DBCC SHRINKDATABASE (mytest001, TRUNCATEONLY)

НЕТ!
Делай только :
Код: sql
1.
2.
USE [mytest001];
DBCC SHRINKFILE (2 , 1000);



И проверь чтоб лог был только один.
Код: sql
1.
2.
3.
4.
USE [mytest001];
SELECT	df.[file_id], df.type_desc, df.name
FROM	sys.database_files AS df
WHERE	df.type_desc = 'LOG'





IvanIvan484)
/backup.sql
BACKUP DATABASE [mybase123] TO DISK = N'C:\script\BASE\mybase' WITH RETAINDAYS = 3, NOFORMAT, INIT, NAME = N'mybase123_backup_2017_05_24_234900_4553030', SKIP, REWIND, NOUNLOAD, COMPRESSION, STATS = 10
GO
declare @backupSetId as int
select @backupSetId = position from msdb..backupset where database_name=N'mybase123' and backup_set_id=(select max(backup_set_id) from msdb..backupset where database_name=N'mybase123' )
if @backupSetId is null begin raiserror(N'Ошибка верификации. Сведения о резервном копировании для базы данных "mybase123" не найдены.', 16, 1) end
RESTORE VERIFYONLY FROM DISK = N'C:\script\BASE\mybase' WITH FILE = @backupSetId, NOUNLOAD, NOREWIND

"RESTORE VERIFYONLY" делает почти ничего... хорошо хорошо, он делает проверку, но она не гарантирует что БД из бекапа восстановится... И раз уж делаете DBCC CHECKDB - то смысла в этом ещё меньше. Я считаю что уж лучше делать полный рестор в новую бд - и если он не упал, то всё ок.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460308
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
человек_ниоткудаIvanIvan481) проверяю целостность БД
Если хочешь и есть время.

IvanIvan482) обновляю статистику
ДА! И да: делай sp_updatestats. Для начала этого достаточно. Раз в два часа.


что ж за фигня-то такая.
проверять базу раз в неделю надо,
а не хочу-не хочу.
не крякнет сервер, что за объемы на экспрессе, проверит, не треснет.

а вот какого черта ему каждые 2 часа статистику обновлять?
он что-то писал об обновлении данных?
какие-то неправильные оценки у него?
у нас, например, раз в сутки ночью идет перезаливка данных, и все.
дальше только чтение.
но ведь нет, особо одаренные ДБА бэкапят формально ридонли базы каждые 3 часа.
а вот еще бы статистики обновляли, когда это нафиг не надо...
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460329
aleksrov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
человек_ниоткуда,

Извините конечно, но вы столько ахинеи насоветовали.
ТС надо по пунктам пройтись и понять для чего все это и как часто определнные пункты нужны для именно ЕГО системы.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460335
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
aleksrovчеловек_ниоткуда,

Извините конечно, но вы столько ахинеи насоветовали.
ТС надо по пунктам пройтись и понять для чего все это и как часто определнные пункты нужны для именно ЕГО системы.
а я про что. чекать базы и бэкапы делать надо всегда
(второе разумеется чаще, чем первое)
а вот все остальное по мере надобности,
и лучше не трогать, когда не в состоянии понять, надо оно или нет.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460362
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
человек_ниоткуда,

Не НАДО советовать шринковать лог. Потому что при его приращении будет полная ж..па: если малыми кусками прирастать, будет куча виртуальных файлов лога, если большими -- все упарятся ждать, пока кусок будет забит нолями. Нахрена вообще сервер заставлять делать бесполезную работу сначала по расширению файла, потом по его сжатию?
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460387
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
Гавриленко Сергей АлексеевичНахрена вообще сервер заставлять делать бесполезную работу сначала по расширению файла, потом по его сжатию?
как зачем, всем будет, чем заняться: и серверу, и ДБА
у нас новый дба каждый день по несколько раз шринкует темпдб.
и днем ему это удается: заливка у нас ночная, и тогда же темпдб выходит на свой привычный уровень в 86Гб
(вообще под ней диск 100Гб, вылезти из берегов невозможно)
я все понимаю, днем, как кто-то начинает спиллить, можно отловить на свежеурезанном темпдб,
но я вас уверяю, он это делает совершенно из иных соображений.
в результате каждый божий день (вернее, ночь) получаем (свежая копия экрана)
не надоест же ему!!!
второй месяц админит, все никак не доходит до него, когда и почему темпдб разносит.
а урезает он до гига(!)
а темпдб обратно 86 набирает.
нескончаемая игра "кто кого"
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460470
Гавриленко Сергей Алексеевиччеловек_ниоткуда,

Не НАДО советовать шринковать лог. Потому что при его приращении будет полная ж..па:
человек_ниоткуда6) очистка журнала
shrink? -- SHRINK нужен до того размера при котором не произойдёт вырастание журнала в рабочее время.

Гавриленко Сергей АлексеевичНахрена вообще сервер заставлять делать бесполезную работу сначала по расширению файла, потом по его сжатию?
Ну идёт maintenance ночной - лог вырастает; начался день - лог маленький, и работает с меньшими latency. Не во всех случаях это даёт прирост производительности - но хуже от этого точно не будет. Если вы способны пообщаться без эмоций, я готов рассказать поподробнее об этом в отдельной теме.
Топикастеру надо организовать maintenance, а не в спецы по SQL-у записываться вообщето. Я даю рекомендации общего пользования.

Кстати помниться кто-то из крутых блоггеров рекомендовал вот это: https://ola.hallengren.com/sql-server-index-and-statistics-maintenance.html Это скрипт обновления статистик и перестройки индексов в одном флаконе. IvanIvan48 тебе для пункта (2) это.

[quot o-o]человек_ниоткудаЕсли в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами.

Так понятнее, братюнь?

o-oкаша полнейшая.
Эээй... Без нервов, дружище. Всё хорошо.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460476
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
человек_ниоткудалог маленький, и работает с меньшими latencyА как latency массива зависит от размера файла (о котором массив вообще не в курсе)?
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460482
uaggster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гавриленко Сергей Алексеевиччеловек_ниоткудалог маленький, и работает с меньшими latencyА как latency массива зависит от размера файла (о котором массив вообще не в курсе)?
Теоретически - никак не зависит.

Могут быть нюансы, если места на диске совсем не осталось, <10% от емкости.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460520
o-o
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
o-o
Гость
[quot человек_ниоткуда]

o-oчеловек_ниоткудаЕсли в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами.

Так понятнее, братюнь?

o-oкаша полнейшая.
Эээй... Без нервов, дружище. Всё хорошо.
мы, кажется, на брудершафт не пили, товарищ?
если нужен братюня для выпивания смузи и обсуждения собственных фантазий,
вон есть жаждущий и страждущий sql_user2.
тоже любитель альтернативного администрирования.

так что там мне должно быть понятнее?
что база может быть попорчена при идеальных CHECKSUM?
в памяти попорчена, но записана идеально на диск?
см. пост выше, с цитатой и источником.
у меня куда больше доверия к человеку, написавшему код dbcc checkdb,
чем к братюне, не помнящему, когда же проверяется checksum.
и в десятый раз, чекдб это куда больше, чем with physical_only.

----
а про кашу, так я вещи своими именами называю.
особо нервные могут не читать, чтобы не перевозбуждаться
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460615
IvanIvan48
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Со шринком все понятно, журнал раз в сутки, базу раз в месяц и то, в крайнем случае. По остальному тоже понятно. Честно говоря я всегда думал что проверка базы делает в режиме read-only, у меня все обслуживаение и бэкапинг будет исключительно ночью.
По какой причине сначало надо бэкапить, а потом уже проверять базу? Просто ну для меня это не логично) при проверке происходит запись в эту же базу что ли?
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460635
MSSQLBug
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
человек_ниоткудаНу идёт maintenance ночной - лог вырастает; начался день - лог маленький, и работает с меньшими latency. Не во всех случаях это даёт прирост производительности - но хуже от этого точно не будет. Если вы способны пообщаться без эмоций, я готов рассказать поподробнее об этом в отдельной теме.
Топикастеру надо организовать maintenance, а не в спецы по SQL-у записываться вообщето. Я даю рекомендации общего пользования.


Прямо навеяло: http://www.sql.ru/forum/1134324/kogda-shrink-loga-deystvitelno-pomogaet
Вы случайно не мой знакомый DBA из этой темы? Или он Вас "обучал"? ;)
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460649
o-o... пропущено
особо нервные могут не читать, чтобы не перевозбуждаться
Отлично выступили, молодой человек.

На разумную часть вашей тирады, посоветовался с коллегами, почитал. brent советует делать checkdb, коллеги в целом склоняются к мнению, что на хорошем железе это не нужно.
Стоит подумать, спасибо.

Всем возражающим - за 10 лет ниразу не видел проблем которые решает checkdb на хорошем железе. Если вы видели, хорошо, буду иметь ввиду. Попробую свои проды проверить на досуге.

IvanIvan48По какой причине сначало надо бэкапить, а потом уже проверять базу? Просто ну для меня это не логично) при проверке происходит запись в эту же базу что ли?
Бекапить нужно чтоб был бекап! Чтоб если железо упадёт пока делается checkdb - можно было восстановиться.
В идеале нужно сделать бекап >> развернуть его не тестовой среде >> сделать полученной БД (на тесте) checkdb.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #39460658
Гавриленко Сергей Алексеевич
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
человек_ниоткудаВсем возражающим - за 10 лет ниразу не видел проблем которые решает checkdb на хорошем железе.Во-первых, понятие "хорошести" железа весьмо растяжимо. Во-вторых, при хорошем железе, может быть плохое его обслуживание: забыли прошивку обновить, дрова не те поставили, словили синьку и приплыли. В-третьих, при любом железе DBCC CHECKDB очень хорошо решает свою основную задачу сигнализировать о проблемах с базой.

По поводу делать или нет, мое мнени такое: если есть физическая возможность делать его на регулярной основе, лучше делать. Насколько нужно упарываться в регулярность запуска CHECKDB при росте размера базы, надо смотреть в каждой конретной ситуации в зависимости от "хорошести" железа, глубины хранения бэкапов и прочих бизнес-нужд.

А вот шринк на регулярной основе делать НЕ НАДО (кроме некоторых маргинальных случаев, связанных с использованием массивов разной производительности).
...
Рейтинг: 0 / 0
Период между сообщениями больше года.
Перестроение индексов в T-SQL
    #40007850
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спрошу тут, чтобы не плодить темы.
Нашёл скрипт для адаптивной дефрагментации. Проверил, создавая запрос к базе. Затем записал в задание, он (скрипт) при работе выдал ошибку:
"Сообщение 1934, степень серьезности 16, состояние 1, строка 1: Ошибка ALTER INDEX. Следующие параметры SET содержат неверные значения: "QUOTED_IDENTIFIER". Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами. [SQLSTATE 42000]"
Где я ошибся?
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #40007870
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Юзер9 Где я ошибся?Не тот скрипт скачал. Нужный был в третьем сообщении этого топика 20511363
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #40007891
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я брал совсем другой.
Если брать IndexOptimize.sql:
"Модуль "IndexOptimize" имеет зависимость от отсутствующего объекта "dbo.CommandExecute". Модуль будет создан, однако не сможет нормально работать, пока этот объект не существует."

Тоже не хочет работать даже в форме запроса. Мне нужен только этот модуль, отдельно.
Прикрутить я смогу. Что из него вырезать?
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #40007897
SERG1257
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вы из тех кто ставит не читая инструкции (небось сразу на прод сервер)
На странице https://ola.hallengren.com/downloads.html третий абзац
Note that you always need CommandExecute; DatabaseBackup, DatabaseIntegrityCheck, and IndexOptimize are using it.
...
Рейтинг: 0 / 0
Перестроение индексов в T-SQL
    #40007942
Юзер9
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я из юзеров, не знающих английский.
...
Рейтинг: 0 / 0
25 сообщений из 51, страница 2 из 3
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Перестроение индексов в T-SQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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