Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
И еще вопрос по шринку, есть ли смысл его включать в обслуживание, если майкрософт не советует это делать, т.е. ну понятно, если прям критический вопрос в плане места, то придется в любом случае, но вот что мелкософты пишут: авторРекомендации Обратите внимание на следующие сведения при планировании сжатия базы данных. Наибольший эффект от операции сжатия достигается при ее применении после операции, создающей много неиспользуемого пространства, например после усечения таблицы или удаления таблицы. Большинству баз данных требуется некоторое свободное пространство для выполнения обычных ежедневных операций. Если сжатие базы данных производится регулярно, но она снова увеличивается в размерах, это означает, что место, освобожденное при сжатии, необходимо для нормальной работы. В таких случаях повторное сжатие базы данных бессмысленно. Операция сжатия не избавляет от фрагментации индексов в базе данных и обычно приводит к еще более сильной фрагментации. Это еще одна причина, по которой не стоит выполнять регулярное сжатие базы данных. Не следует устанавливать параметр базы данных AUTO_SHRINK в значение ON без достаточных на то оснований. поэтому вот даже хз) индексы типа сильнее фрагментируются. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 21:52 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Не надо делать шринк. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 22:30 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
IvanIvan48И еще вопрос по шринку, есть ли смысл его включать в обслуживание, если майкрософт не советует это делать, т.е. ну понятно, если прям критический вопрос в плане места, то придется в любом случае, но вот что мелкософты пишут:Всё правильно пишут, не шринкуйте. Только как аварийная команда, при особых ситуациях, когда из за неисправности занято слишком много места. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.05.2017, 23:35 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
uaggsterчеловек_ниоткуда1) проверка целостности БД Не нужна если БД на СХД или RAID с проверкой целостности. Гм... Это как? Что означает "с проверкой целостности"? RAID5/1/10 и т.д.? Так они могут писать "мимо" - только в путь! Какая-нибудь бяка в драйвере контроллера, и всё, понеслось! (Дада. Я люблю сервера DEPO, куда деваться то). человек_ниоткуда Не поможет если после проверки булет выполнено резервное копирование БД. Ну, первым шагом джоба DBCC CHECKDB, вторым (если не обломилось на первом шаге) - полный бэкап (ну, например). Если база, скажем так, сотня-другая гигабайт - то всё за вполне себе небольшое время завершается. Почему нет то? Законно... Мой косяк что бекап после. Сначала бекап, потом checkdb. Ибо лучше сделать бекап и ждать CHECKDB если всё упадёт до бекапа, то будет нехорошо. Если в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. Я, признаться, не помню как работает механизм checksum страницы: конкретно не знаю проверяет SQL checksum в момент сброса буффера на диск или нет. Ибо если проверяет, то получается, в момент когда произойдёт ошибка - база и так в suspend уйдёт; получается что вообще нет смысла checkdb делать, за исключением случая когда диск такой конченый, что буквально сыпется от вращения блина. А если не проверяет (что я считаю вполне правильно), то CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами. CHECKDB это полный скан всей базы, т.е. как-никак да диск это напрягает - и ресурс его сокращает. тогда так: Можно, если есть время на выполнение этой процедуры. Иначе менять дисковую систему на обеспечивающую большую надёжность. uaggsterчеловек_ниоткуда Не очень нужна для GPT-партиций (вопрос спорный). Почему? Объясните, правда не понимаю! GPT как я понял по описанию в себе имеет механизм контроля целостности данных. Т.е. она поймёт, если в неё что-то нитак записалось сама. Но, опять же, вопрос спорный - мож я что-то в мануале перекурил ;) буду рад достоверной инфе, если неправ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 10:46 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткудаЕсли в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. Я, признаться, не помню как работает механизм checksum страницы: конкретно не знаю проверяет SQL checksum в момент сброса буффера на диск или нет. Ибо если проверяет, то получается, в момент когда произойдёт ошибка - база и так в suspend уйдёт; получается что вообще нет смысла checkdb делать, за исключением случая когда диск такой конченый, что буквально сыпется от вращения блина. А если не проверяет (что я считаю вполне правильно), то CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами. каша полнейшая. checksum/tornpage проверяется при чтении, при записи он считается и записывается. поэтому страницы с битыми checksum-ами выявляются при чтении. только вот чекдб это отнюдь не "просто чтение всего". вам уже намекали, что база это не просто куча правильно или неправильно записанных байтов, это хранилище тех же индексов, где вообще-то каждая страница "знает свое место", за какой страницей она идет логически, и это, например, не интересует никакой RAID. и даже если вы делаете бэкапы с опцией checksum, и потом успешно из них восстанавливаетесь, это нисколько не гарантия небитости базы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 11:07 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 11:15 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
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. И проверь чтоб лог был только один. Код: sql 1. 2. 3. 4. 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 - то смысла в этом ещё меньше. Я считаю что уж лучше делать полный рестор в новую бд - и если он не упал, то всё ок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 11:52 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткудаIvanIvan481) проверяю целостность БД Если хочешь и есть время. IvanIvan482) обновляю статистику ДА! И да: делай sp_updatestats. Для начала этого достаточно. Раз в два часа. что ж за фигня-то такая. проверять базу раз в неделю надо, а не хочу-не хочу. не крякнет сервер, что за объемы на экспрессе, проверит, не треснет. а вот какого черта ему каждые 2 часа статистику обновлять? он что-то писал об обновлении данных? какие-то неправильные оценки у него? у нас, например, раз в сутки ночью идет перезаливка данных, и все. дальше только чтение. но ведь нет, особо одаренные ДБА бэкапят формально ридонли базы каждые 3 часа. а вот еще бы статистики обновляли, когда это нафиг не надо... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 12:02 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткуда, Извините конечно, но вы столько ахинеи насоветовали. ТС надо по пунктам пройтись и понять для чего все это и как часто определнные пункты нужны для именно ЕГО системы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 12:28 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
aleksrovчеловек_ниоткуда, Извините конечно, но вы столько ахинеи насоветовали. ТС надо по пунктам пройтись и понять для чего все это и как часто определнные пункты нужны для именно ЕГО системы. а я про что. чекать базы и бэкапы делать надо всегда (второе разумеется чаще, чем первое) а вот все остальное по мере надобности, и лучше не трогать, когда не в состоянии понять, надо оно или нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 12:34 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткуда, Не НАДО советовать шринковать лог. Потому что при его приращении будет полная ж..па: если малыми кусками прирастать, будет куча виртуальных файлов лога, если большими -- все упарятся ждать, пока кусок будет забит нолями. Нахрена вообще сервер заставлять делать бесполезную работу сначала по расширению файла, потом по его сжатию? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 12:53 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей АлексеевичНахрена вообще сервер заставлять делать бесполезную работу сначала по расширению файла, потом по его сжатию? как зачем, всем будет, чем заняться: и серверу, и ДБА у нас новый дба каждый день по несколько раз шринкует темпдб. и днем ему это удается: заливка у нас ночная, и тогда же темпдб выходит на свой привычный уровень в 86Гб (вообще под ней диск 100Гб, вылезти из берегов невозможно) я все понимаю, днем, как кто-то начинает спиллить, можно отловить на свежеурезанном темпдб, но я вас уверяю, он это делает совершенно из иных соображений. в результате каждый божий день (вернее, ночь) получаем (свежая копия экрана) не надоест же ему!!! второй месяц админит, все никак не доходит до него, когда и почему темпдб разносит. а урезает он до гига(!) а темпдб обратно 86 набирает. нескончаемая игра "кто кого" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 13:12 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевиччеловек_ниоткуда, Не НАДО советовать шринковать лог. Потому что при его приращении будет полная ж..па: человек_ниоткуда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каша полнейшая. Эээй... Без нервов, дружище. Всё хорошо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 14:43 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткудалог маленький, и работает с меньшими latencyА как latency массива зависит от размера файла (о котором массив вообще не в курсе)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 14:47 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Гавриленко Сергей Алексеевиччеловек_ниоткудалог маленький, и работает с меньшими latencyА как latency массива зависит от размера файла (о котором массив вообще не в курсе)? Теоретически - никак не зависит. Могут быть нюансы, если места на диске совсем не осталось, <10% от емкости. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 14:54 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
[quot человек_ниоткуда] o-oчеловек_ниоткудаЕсли в БД случился косяк, то случиться он в момент, когда запись произведена. А выявится, когда страница данных (с косяком) будет прочитана. CHECKDB нужен перед удалением последнего исторического бекапа, т.е. намного реже чем сам бекап. И он вообще не нужен если бекапы проверяются тестовыми ресторами. Так понятнее, братюнь? o-oкаша полнейшая. Эээй... Без нервов, дружище. Всё хорошо. мы, кажется, на брудершафт не пили, товарищ? если нужен братюня для выпивания смузи и обсуждения собственных фантазий, вон есть жаждущий и страждущий sql_user2. тоже любитель альтернативного администрирования. так что там мне должно быть понятнее? что база может быть попорчена при идеальных CHECKSUM? в памяти попорчена, но записана идеально на диск? см. пост выше, с цитатой и источником. у меня куда больше доверия к человеку, написавшему код dbcc checkdb, чем к братюне, не помнящему, когда же проверяется checksum. и в десятый раз, чекдб это куда больше, чем with physical_only. ---- а про кашу, так я вещи своими именами называю. особо нервные могут не читать, чтобы не перевозбуждаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 15:30 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Со шринком все понятно, журнал раз в сутки, базу раз в месяц и то, в крайнем случае. По остальному тоже понятно. Честно говоря я всегда думал что проверка базы делает в режиме read-only, у меня все обслуживаение и бэкапинг будет исключительно ночью. По какой причине сначало надо бэкапить, а потом уже проверять базу? Просто ну для меня это не логично) при проверке происходит запись в эту же базу что ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 17:55 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткудаНу идёт maintenance ночной - лог вырастает; начался день - лог маленький, и работает с меньшими latency. Не во всех случаях это даёт прирост производительности - но хуже от этого точно не будет. Если вы способны пообщаться без эмоций, я готов рассказать поподробнее об этом в отдельной теме. Топикастеру надо организовать maintenance, а не в спецы по SQL-у записываться вообщето. Я даю рекомендации общего пользования. Прямо навеяло: http://www.sql.ru/forum/1134324/kogda-shrink-loga-deystvitelno-pomogaet Вы случайно не мой знакомый DBA из этой темы? Или он Вас "обучал"? ;) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 18:28 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
o-o... пропущено особо нервные могут не читать, чтобы не перевозбуждаться Отлично выступили, молодой человек. На разумную часть вашей тирады, посоветовался с коллегами, почитал. brent советует делать checkdb, коллеги в целом склоняются к мнению, что на хорошем железе это не нужно. Стоит подумать, спасибо. Всем возражающим - за 10 лет ниразу не видел проблем которые решает checkdb на хорошем железе. Если вы видели, хорошо, буду иметь ввиду. Попробую свои проды проверить на досуге. IvanIvan48По какой причине сначало надо бэкапить, а потом уже проверять базу? Просто ну для меня это не логично) при проверке происходит запись в эту же базу что ли? Бекапить нужно чтоб был бекап! Чтоб если железо упадёт пока делается checkdb - можно было восстановиться. В идеале нужно сделать бекап >> развернуть его не тестовой среде >> сделать полученной БД (на тесте) checkdb. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 19:03 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
человек_ниоткудаВсем возражающим - за 10 лет ниразу не видел проблем которые решает checkdb на хорошем железе.Во-первых, понятие "хорошести" железа весьмо растяжимо. Во-вторых, при хорошем железе, может быть плохое его обслуживание: забыли прошивку обновить, дрова не те поставили, словили синьку и приплыли. В-третьих, при любом железе DBCC CHECKDB очень хорошо решает свою основную задачу сигнализировать о проблемах с базой. По поводу делать или нет, мое мнени такое: если есть физическая возможность делать его на регулярной основе, лучше делать. Насколько нужно упарываться в регулярность запуска CHECKDB при росте размера базы, надо смотреть в каждой конретной ситуации в зависимости от "хорошести" железа, глубины хранения бэкапов и прочих бизнес-нужд. А вот шринк на регулярной основе делать НЕ НАДО (кроме некоторых маргинальных случаев, связанных с использованием массивов разной производительности). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.05.2017, 19:34 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Спрошу тут, чтобы не плодить темы. Нашёл скрипт для адаптивной дефрагментации. Проверил, создавая запрос к базе. Затем записал в задание, он (скрипт) при работе выдал ошибку: "Сообщение 1934, степень серьезности 16, состояние 1, строка 1: Ошибка ALTER INDEX. Следующие параметры SET содержат неверные значения: "QUOTED_IDENTIFIER". Убедитесь, что параметры SET содержат значения, подходящие для использования с индексированные представления, индексы для вычисляемых столбцов, отфильтрованные индексы и/или уведомления о запросах, методы типов данных XML и/или операции с пространственными индексами. [SQLSTATE 42000]" Где я ошибся? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 21:22 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Юзер9 Где я ошибся?Не тот скрипт скачал. Нужный был в третьем сообщении этого топика 20511363 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 21:53 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
Я брал совсем другой. Если брать IndexOptimize.sql: "Модуль "IndexOptimize" имеет зависимость от отсутствующего объекта "dbo.CommandExecute". Модуль будет создан, однако не сможет нормально работать, пока этот объект не существует." Тоже не хочет работать даже в форме запроса. Мне нужен только этот модуль, отдельно. Прикрутить я смогу. Что из него вырезать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 23:11 |
|
||
|
Перестроение индексов в T-SQL
|
|||
|---|---|---|---|
|
#18+
А вы из тех кто ставит не читая инструкции (небось сразу на прод сервер) На странице https://ola.hallengren.com/downloads.html третий абзац Note that you always need CommandExecute; DatabaseBackup, DatabaseIntegrityCheck, and IndexOptimize are using it. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.10.2020, 23:38 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=40007891&tid=1685545]: |
0ms |
get settings: |
5ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
28ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 220ms |
| total: | 342ms |

| 0 / 0 |
