|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
Auto-shrink в MS SQL SERVER 2008R221.11.2022, 15:37. Показов 2513. Ответов 21
Метки нет (Все метки)
Почему и чем "опасен" шринк" ("автошринк")???
По умолчанию сервера автосжатие - True, то есть включено по "заводским" настройкам самого майкрософт я так понимаю.... Но при этом всём в "методичках" и "статьях" (я так понимаю, что они официальные, т.к. размещены на оф. сайте) оно типа как бы не рекомендовано, т.к. частое сжатие (частый шринк) приводит к фрагментации данных в файловой системе. (а фрагментация я так понимаю, когда физический порядок страницы не совпадает с логическим, т.е. в новой базе данных этот порядок соблюдается, логический = физическому, но после удаления таблицы он сразу же нарушается???я правильно понимаю?? но не в этом вопрос). Так вот, после удаления таблиц, место внутри базы освобождается, но на диске база все также осталась ( сиквел сервер не отдает место файловой системе обратно), я применяю шринк (вручную), место освобождается на диске (сиквел сервер отдает это место файловой системе?). И если я все правильно понимаю здесь две стороны: 1. при распухании базы, следует делать шринк (допустим даже вручную), чтобы после удаления данных, вернуть место файловой системе. Это дает плюс "огромный" , ну типа отдает место свободное и база меньше весит, т.е. база не занимает свободное место (место без данных) на диске. Но после шринка появляется фрагментация 2.при определённых действиях база распухает, например при удалении данных, данные внутри базы меньше, но в файловой системе занимает также. Шринк не производится, база распухает, данные весят к примеру 60 гб, а на диске 80гб, 20 гб это свободное место на диске в файловой системе. И данные не займут больше места, пока не займут всё свободное место, т.е. 20 гб. Я написал много чего как я понимаю и вопросы, на которые хочется получить ответ. Я начинающий АБД. Время чтобы тестить есть, начальство брало меня чтобы выучить как специалиста, который будет все это в будущем контролировать с но правда с постоянным самообучением. Я про себя сказал к слову о том, что много моментов не пойму в силу не понятия слэнга... Я задался этим вопросом, т.к. у меня база данных: размер 85303,23 МБ и свободно 17759,58 МБ (20,8%). Стоит автошринк, но в вышенаписанном мною я пояснил что не рекомендовано. Вопрос стоит о оптимизации базы , а именно ее размере, попытки ее уменьшить без вреда данным. Может быть сделать перестройку индексов и в дальнейшем отключить автошринк?? Прошу помочь в очередной раз, я не прошу сразу "все карты на стол" и "как все и сразу" сделать, а советов из своего личного опыта и с опытом в применении всех возможных рекомендаций майкрософта в решении такой проблемы или проблем к ним близким. Добавлено через 1 минуту Я хоть и без опыта но баз чтобы протестить все варианты хватит.
0
|
|
| 21.11.2022, 15:37 | |
|
Ответы с готовыми решениями:
21
Ошибки при установке SQL Server 2008R2 Sql server 2008r2. Ole db подключение выдает ошибку ssl
|
|
41 / 39 / 7
Регистрация: 16.01.2012
Сообщений: 163
|
|
| 21.11.2022, 16:15 | |
|
Может быть разрастается лог транзакций?
Такое бывает. Надо смотреть в свойствах БД, что именно растет. Сталкивался с тем, что база может быть 10 гб, а журнал 100 гб и вырастает за пару месяцев с 0 до 100. Вообще если настроить план обслуживания БД, то после полного резервного копирования журнал должен усекаться. И места на диске становится больше. Но сталкивался с тем, что он не усекался, тогда приходилось усекать вручную. Для примера не усекался на одной из БД из-за того, что резервное копирование делалось джобом по расписанию, а не планом обслуживания БД.
0
|
|
|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
| 21.11.2022, 16:21 [ТС] | |
|
С логом транзакции все вроде окей. Я имею ввиду вот этот механизм автошринка и авторасширения, что база сама через распухает на плюс 20 гигов. Может поиграть с авторасширением?
0
|
|
|
41 / 39 / 7
Регистрация: 16.01.2012
Сообщений: 163
|
||
| 21.11.2022, 16:31 | ||
|
А, речь про autogrowth... Честно говоря наверно индивидуально надо думать. А если закончится резко? Какими темпами разрастается?
0
|
||
|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
| 21.11.2022, 16:35 [ТС] | |
|
Я имел ввиду что база на диске занимает 85303,23 МБ, но из них свободно 17759,58 МБ (20,8%),а данными занято остальные 79,02%). Как избавится от постоянного роста базы на плюс 20 гигов, если он всегда пустые, а только пару мб из них данными заняты.
0
|
|
|
41 / 39 / 7
Регистрация: 16.01.2012
Сообщений: 163
|
|
| 21.11.2022, 16:52 | |
|
Понял, значит речь о Autogrowth, можно почитать по теме - Change Autogrowth for Database как менять, как проверить на сколько расширяет и т.п.
0
|
|
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 357
|
||||
| 21.11.2022, 17:57 | ||||
|
0
|
||||
|
668 / 291 / 120
Регистрация: 12.04.2022
Сообщений: 1,000
|
|
| 21.11.2022, 19:23 | |
|
Не трогайте Auto-shrink (особенно на OLTP и если диски SSD), "первая" же модификация DDL/DML разрушит всю построенную после сжатия структуру.
Шринкануть можно и нужно, когда место заканчивается, либо пошла деградация производительности.
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
|
||
| 22.11.2022, 09:45 | ||
|
Т.е. работаете вы, работаете, и тут бац, серверу приспичило шринкнуть базу. Всё, сидим, курим. В хорошо спроектированной базе данных - шринк практически не нужен. Свободное место в файлах базы должно быть всегда. Но, для того, чтобы все было в равновесии, должно выполняться некоторое количество условий. Например, в базе не должно быть куч (heap), таблиц без кластерного индекса, куда производится интенсивная вставка/удаление (в этом случае место, относящееся к удаленным строкам не возвращается в общий оборот) [нужно делать периодическое Alter table rebuild] Фрагментация кластерного индекса (и некластерных индексов) - тоже приводит к распуханию файла БД и т.д. Но, в принципе - шринк это экстраординарная операция. А на лог-файле, особенно если бэкап лога делается регулярно - так вообще в целом вредная. лог-файл при регулярных бэкапах - нормально записывается по кольцу, и его размер это "то что надо для работы". Кроме того, лог файл - очень болезненно расширяется. Если для файла БД разрешение в ОС Instant File Initialization (см: https://learn.microsoft.com/en... rver-ver16 ) помогает, то в случае лог по прежнему при расширении - заполняется нулями предварительно. Поэтому сжимать лог имеет смысл только после того, как вы сделали какой-то массовый импорт (в полной модели сохранения), или промодифицировали "по-записи" много[сот]милионную таблицу и т.д. Короче сделали что-то такое эксклюзивное, которое в обозримом времени не повторится - ну тогда да. Где-то так, +-, не претендую на истину в последней инстанции.
0
|
||
|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
| 22.11.2022, 11:48 [ТС] | |
|
Все обслуживание базы сделано до меня. Оно и понятно база крутится с 2021 года. Но моя задача как АБД в редких случаях научится в различных ситуациях "выкрутится", а в повседневной работе следить за планом обслуживания (доверяй машине, но проверяй как делаются бэкапы, с ошибками/без ошибок, причины ошибок и иное...), за ростом mdf-файла и log-файла, наличие свободного места на диске. Но снова отошел от темы разговора...
![]() Возможно, в силу того, что я самоучка, то меня сложнее понять, чем кажется ![]() Но что я имею и почему я задался этим вопросом. У меня, повторюсь, база данных: размер 85303,23 МБ и свободно 17759,58 МБ (20,8%), Автошринк,повторюсь, стоит - True. Autogrow стоит - строки - С шагом по 100 %, без ограничений - журнал- С шагом по 100% до 20097 МБ. Была попытка установить автоувеличение базы данных немного подругому, в меньшую сторону, то у пользователей вылетала ошибка в 1с. Журнал не трогал, т.к. он все равно по плану обслуживания каждый 15 минут бэкапится, потом бэкап старшке 12 часов удаляется. Пытался делать перестройку/реорганизацию индексов БД (правда на тестовой базе данных) добился уменьшения размера базы данных, хоть и тестовая, но с 53-54гб уменьшил до 43гб. Так вот вопрос мои таков: если я отключу автошринк: то я добьюсь того, что после моего ребилда/реорганизации индексов у меня лог/база распухнет (понятно почему, индексы перестроены/реорганизованы), но сжав вручную я увижу размер базы "натуральный", который после перестройки/реорганизации и который меньше, чем до этих операций. Но при этом самое главное свойство соблюдается, а именно целостность. Так вот, отключив автошринк я, уменьшу в будущем, посредством отключения автошринка (который каждый раз увеличивал фрагментацию индексов на постоянной основе), увеличение фрагментации индексов. Но здесь такая загвоздка, т.к. мне надо на регулярной основе делать ребилд/реорганизацию индексов, то при распухании лога все понятно, он по плану обслуживания станет "таким как надо для работы", но при распухании базы данных (если это конечно так будет и это "не миновать"), мне прозводить шринк вручную....следовательно.... уменьшив фрагментацию индкесов и этим уменьшив базу, меня не будет ждать подводный камень, что когда-нить база руспухнет и мне придется делать шринк и увеличиьь фрагментацию?? Такое чувство, что "качели". Не пойму этого... Как АБД, что мне делать в этом случае и вообще что делать с базой данных в плане администрирования???Возможно, действия таковы, для решения моих вопросов?: 1.настроить рациональнее план обслуживания ( ну я уже не знаю как лучше делать... последнее что сделал, это применил параметр "Сжимать копии", уменьшив благодаря этому занятость этими же копиями место на диске. Но при этом глубина рез копий как была 7 дней, так и осталось. 7 копий были 490гб, а стали 49гб. Оптимизацию провел ![]() 2.отключить автошринк и следить за размеров бд/логом плюс к этому следить за фрагментацией индексов. 3.на регулярной основе проводить фрагментацию индексов (перестройку/реорганизацию), уменьшив базу, но раздув лог. 4.настроить автоувеличение бд и лога, так чтобы не было ошибок со стороны пользователей 1с. Но как это сделать? Тестировать постоянно разный вид роста либо в абсолютных, либо относительных показателях? Либо установить максимальный "фиксирвоанный размер" при достижении которого, снова увеличить размер максимального на глаз?Но как тогда поступать, когда база данных сама по себе резервирует место на диске больше, чем данные занимают, как я уже описывал "размер 85303,23 МБ и свободно 17759,58 МБ (20,8%), а данные - это все остальное место 67 543,65 МБ ". 5.радикально поступить, разбить таблицы по разным файловым группам??? Просто в моем случае архитектуру БД создала 1с, то есть она сама создает таблицы в БД , когда в 1с создают к примеру справочник. Не понятно как тогда действовать. 6.Старые данные запихнуть в другую файловую группу и перенести на другой диск. Но что при этом меняется? Ничего? Доступ все равно будет ко всем файлам и в этом случае бэкап делается снова же всей БД, то есть всех файловых групп сколько их бы не было. То есть как есть так есть? Как были в файловой группе по умолчанию Primary, так и оставить? Просто в статьях и рекомендациях указывают, что не храните данные в файловой группе по умолчанию!!!Но как тогда поступить???Старые данные нельзя удалить, т.к. архитектуру БД строит 1с, а значит нарушится целостность. 7.купить новый диск с миллионом ГБ ? Я упираюсь в бюджет организации.Я много чего написал в очередной раз, но я не из тех , кто задал вопрос из трех слов и жду ответа в 100 слов. Я общаюсь "сам с собой при решении вопросов" и решил у Вас у всех уточнить. Прошу отнестись с понимаем, я очень дотошен.
0
|
|
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 357
|
|||||
| 22.11.2022, 15:53 | |||||
|
1
|
|||||
|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
| 23.11.2022, 09:32 [ТС] | |
|
1.Автошринк отключу.
2.Какие правильные настройки автоувеличения файла данных и журнала транзакций? Прикинуть "на глаз" сколько она в будущем будем занимать места на диске и установить максимальный размер, который рассчитать = реальный объем базы + 20% от общего объема данных и так вручную добавлять каждые 3-4 месяца либо "отследить" как в динамике растёт файл данных и просто посчитать сколько в день, к примеру, растёт файл данных, потом просто умножить на 100-120 дней и получить итоговый размер "в будущем"? Либо какая-то статья есть, рекомендации, про то как, надо сразу установить размер базы + прикинуть сколько будет через полгода/9месяц/год весить?Про журнал транзакций тоже не стоит забывать мне я так понимаю? Даже если он каждые 15 минут бэкапится + бэкап лога старше 12 часов автоматически удаляется. Не стоит забывать, что некоторые операции могут раздуть лог, да? Поэтому стоит также правильно настроить автоувеличение лога? При этом всём, понимая что "в частности"бэкап лога при импорте больших данных распухает, дорогостоящим (в плане ресурсов сервера, производительности, времени) является параметр шага автоувеличния лога???Так как, при нехватке места для лога он будет автоматом увеличиваться (имеется ввиду параметр автоувеличения/максимального размера) и как раз это будет влиять на потребляемые ресурсы сервера, производительность, время отклика,я правильно понимаю? И поэтому стоит верно установить параметр (а именно шаги роста в абсолютных и относительных величинах) автоувеличения/максимального размера, что для файла данных, что для журнала транзакций, верно да? 3.полный бэкап делается каждый день. Последнее что буду использовать в качестве оптимизации - сжатые резервные копии. Ну и журнал транзакций каждый раз после полного бэкапа и через каждые 15 минут бэкапится + бэкап старше 12 часов удаляется. 4. искал варианты оптимизировать рабочую базу данных. Пытался как-нить "ужать" с целью минимизировать расходы на доп. комплектующие в будущем, грубо говоря "выжать все соки" из всех возможных вариантов оптимизации. За курс отдельное спасибо. Возвращаюсь к вопросу о шринке . Отключу автошринк - избавлюсь от фрагментации страниц в файлах данных. Но при применении одного из немногих вариантов оптимизации рабочей базы данных, а именно перестройка/реорганизация индексов, я раздую лог или раздую рабочую базу данных? Либо и лог, и рабочую базу данных вместе раздую? Либо только лог раздую? И обычным шринком его приведу в "нормальный для работы" вид?Но вопрос противоположений насчёт шринка и насчёт перестройки/реорганизации индексов? непонятки у меня тогда Поэтому у меня стоял вопрос автошринка и шринка в общем и в вследствие все вытекающие подводные камни и вопросы!
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
|
||||
| 23.11.2022, 15:07 | ||||
|
Установите 512 Мб для файла данных и 64 Мб лог-файла. Если вы выполняете бэкап лога - то лог будет оставаться в пределах, нужных базе для работы, и никак "шринькать" его не надо, это вредно. Слишком большой прирост лог-файла - не устанавливайте, т.к. при выделении места под лог-файл оно инициализируется нулями, в отличие от mdf, место под которое может просто выделяться, если у учетки, от имени которой стартует сервис MSSQLSERVER есть привилегия Instant File Initialization. Слишком маленьким значение прироста ldf тоже делать не надо, т.к. лог-файл приобретает излишнюю внутреннюю фрагментацию (см. например http://adventuresinsql.com/200... ging-vlfs/) Поэтому делать полный бэкап раз в сутки, а бэкапы лога стирать через 12 часов - бессмысленно. Если вы хотите гарантированно восстановиться на любой момент времени СЕГОДНЯ, вам нужно хранить ПОЛНЫЙ бэкап, сделанный ВЧЕРА + все бэкапы логов, сделанные ВЧЕРА И СЕГОДНЯ. Если вы предполагаете восстанавливать базу только по состоянию на момент создания полного бэкапа - переведите БД в simple recovery model. Впрочем, я, честно говоря, не понимаю, зачем это сейчас. Жесткие диски - дешевле грязи, память тоже. Объем базы - мизерный. Если б у вас терабайт 20 было, тогда б надо было подпрыгивать, а так... (ИМХО, разумеется). И... Не храните бэкапы рядом с базой. Не будьте идиотом. Бэкап должен хранится физически за пределами любой железяки, имеющей отношение к вашей БД. Не делить с ней СХД, физическую ноду, виртуальный сервер, и т.д. :-)
0
|
||||
|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
| 24.11.2022, 13:42 [ТС] | |
|
1.попробую поставить автоувеличение именно такое. Возможно причина того, что база данных сама "захватывает" свободное пространство (место) на диске и данных там как таковых там нет (в занятом базой данных "захваченном месте" свободном месте), кроется именно в неправильной настройке роста файла данных. Что касаемо лога, то ситуация такая, что он до "конских размеров" не растет, то можно также протестировать. Поиграюсь с этим, особенно с размером автоувеличения лога, вплоть до появления ошибки у пользователей. Ну и расти он не будет в принципе, т.к. бэкапами усекается. В общем прослежу.
2. В силу "упрощения" установлен "такой режим" резервного копирования, а именно раз в день бэкап, так 7 раз в неделю и старый бэкап (старше 1 недели) удаляется. Логи бэкапится каждый 15 минут + плюс удаляется бэкап лога старше 12 часов. Попробую предложить вариант использования 1 полного бэкапа в неделю и ежедневного 15-минутного бэкапа лога. Понятно что "файликов" больше и заморочек как таковых чуть больше так как файлов больше. Но при этом глубина восстановлния возрастёт?? Ну и перевести базу в "Простую моедль восстановления", делая каждый день только бэкап... Ну это конечно проще некуда, но бухгалтерия отдельное государство, могут потребовать восстановить базу на определенный момент времени (если таковой бэкап лога будет в живых, т.е. младше 12 часов при нынешнем режиме работы). Но за советы спасибо в плане этого момента.3.Планирую вручную на тестовой базе в очередной раз запустить, но при этом хочу почитать-поискать статью по этой теме, разобрать чужой код по перестройке/реорганизации индексов. Чтобы понять все плюсы и недостатки этого всего, чем чревато, чем опасно, что до этой операции делать/не делать , что после перестройки/реорганизации можно/нельзя делать/ не делать. 4. ежедневная копия бд и 15 минутные копии лога попадают сразу на сервев, а потом на схд. Там порядка 36000 ГБ. Моя главная задача привести базу в оптимальное состояние.
0
|
|
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
|
|||||
| 24.11.2022, 18:01 | |||||
|
Если вы, например, начали делать полные бэкап в 01:00, то после 13:00 любого дня вы использовать бэкапы лога для восстановления не сможете. Еще раз - не сможете НЕ восстановиться, например, на 09:00 или на 15:00, а не сможете использовать ваши бэкапы логов для восстановления вообще. в 13:00 они превратятся в тыкву все сразу. В общепринятой терминологии - "глубина восстановления" - это тот период времени (+условия), по состоянию на который вы можете восстановить данные. Например, ежегодно, 1 января вы делаете ежегодный бэкап и храните его вечно. И делаете так 10 лет. Глубина восстановления - 10 лет по состоянию на 1 января. Или, например, вы делаете полный бэкап ежедневно, храните бэкапы неделю, бэкапы лога - каждый час, и храните их 2 недели - глубина восстановления будет 1 неделя (определяется наличием полного бэкапа), но по состоянию на любой момент времени от самого старого бэкапа, возможно, за исключением последнего прошедшего часа. Или вообще на любой момент, включая текущий, если удастся сделать бэкап хвоста лога (tail log). Т.к. вы храните бэкапы лога 2 недели и ОНИ У ВАС ВСЕ ЕСТЬ! Время восстановления - да, вырастет. Потому что при восстановлении log-а в базу norecovery mssqlserver как бы прокручивает все операции, следы которых остались в логе. И если вы делали много каких то операций, ну, например, многомиллионную таблицу особоизвращенным методом модифицировали (по записи, например), или грузили также - то и лог, и бэкап лога будут иметь огромный размер, и восстанавливаться он будет сутками. (Сейчас полетят тапки... но не надо). Это слабо влияет на производительность и размер базы. Нет, безусловно влияет, иначе б этого не было, но... обычно не стоит возни. Сильно влияет статистика, и вот ее как раз нужно обновлять регулярно, не отдавая на откуп автообновлению. Именно от того, что бонусом к rebuild идет обновление статистики - ребилд индексов волшебным образом и увеличивает производительность. (Хотя да, можно придумать ситуации, когда ребилд индексов нужен и полезен. Но... это примерно как зубра в подмосковном лесу встретить. Они там есть, и много. Правда-правда) Воевать с фрагментацией индексов - вообще дело бесполезное и практически вредное. Иначе накроется СХД - и всё. Ищем новую работу. Потерять [все] бэкапы - больно, но не смертельно, и, обычно никак не влияет на бизнес. И у вас есть основная система. Потерять основную базу - очень неприятно, бизнес может нести какие-то потери от простоя, но, при ваших мизерных объемах поднять 85 Гб из бэкапа - 20 минут делов. Но потерять и базу, и бэкап... Ну вы поняли. :-) (Дисклаймер - всё ИМХО).
0
|
|||||
|
0 / 0 / 0
Регистрация: 11.08.2022
Сообщений: 217
|
|
| 25.11.2022, 09:35 [ТС] | |
|
Тогда как объяснить вот такой момент...После перестройки/реорганизации индексов размер базы уменьшается (понятное дело что сразу после перестройки делается шринк). Это и есть "волшебное" действие обновления статистики?
0
|
|
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 357
|
|||
| 25.11.2022, 09:40 | |||
|
В очередной раз порекомендую этот плейлист для ознакомления. Там есть ответы на все ваши вопросы
0
|
|||
|
1304 / 358 / 97
Регистрация: 14.10.2022
Сообщений: 1,087
|
||
| 25.11.2022, 12:06 | ||
|
1. Размер БД не играет [почти] никакой роли. Процессор все равно работает только с данными, которые находятся в ОЗУ. Данные с диска попадают в память кусками (страницами), и находятся в памяти так долго, как это возможно. До тех пор, пока место не понадобится под те данные, которые находятся где-то там, на диске, но которые б надо обработать сейчас. И вытаскивать страницу из 10 Гб файла или из 1000 Гб - один фиг вытаскивать страницу. Одинаковая работа. Сервер не просматривает файл последовательно, а выцепляет нужный кусок из нужного места. Сразу. Поэтому гигабайт там будет или терабайт в этом файле - решительно пофиг. 2. Файл БД - довольно сложен по структуре. Можете представлять его себе как некий виртуальный диск, поверх файла. У него внутри - все своё. Своя специализированная файловая система, неуниверсальная, поэтому максимально быстрая, свои принципы размещения информации, удаления, сборки мусора, логгирования, транзакций ввода-вывода и т.д. Короче такая суперNTFS поверх NTFS или линуховых FS. И там все нормально с т.з. использования свободного места, переиспользования высвободившегося и т.д. Помогать ему обычно - не надо. Есть исключения, типа интенсивно используемых куч, но это нюансы. 3. Бороться за размер файла - не надо. Если его поведение остается в рамках приличий. Ну, например он не больше хранящихся в нем данных раз эдак в 10. 4. Фрагментация, и, особенно разделение страниц, page split, могут отрицательно влиять на производительность, но не напрямую, а опосредованно. Они снижают количество доступной памяти для сервера. Происходит это так. Вот у вас есть таблица. В ней есть поля переменной длины, типа varchar или varbinary. Вы все это плотно упаковали, сделав Alter table rebuild. Теперь все хранится в минимально возможном объеме на диске, в соответствии с fillfactor для кластерного индекса, обычно по умолчанию 100%. Для кучи - так точно 100%. Теперь вы делаете update строки, причем в ваше поле varchar записываете значение большей длины. Можете? Конечно! И теперь страничка на диск в прежнем виде помещена быть не может. varchar то больше стал занимать! Что делает сервер? Он разрезает страницу. Добавляет еще такую же. И в нее выносит данные изменившейся строки. Вместо одной страницы получается две, и обе заполнены только частично. От этого свежесжатый файл - пухнет. Это катастрофа? Нет, только мелкая неприятность. Чем неприятно: Сервер таскает данные в память с диска в неизменном виде. Т.е. если на диске лежит страница, на которой чуть менее, чем все данные помечены как удаленные - он все это потащит в память и разместит в памяти. В т.ч. и бесполезные куски. Кроме того, если он раньше тащил одну страницу (1 дисковая операция), то теперь потащит две, и, соответственно эффективная скорость диска сократится. Соответственно, если у вас в базе все таблицы порезаны в кружева - ОЗУ будет использоваться неэффективно, и диск будет молотить впустую. Это резон, почему иногда, время от времени, ребилд индексов - все же делать надо. НО! В майкрософт, а изначально - в сабейз не дураки сидят. И дырки в страницах - повторно используются. При этом, правда, растет фрагментация. Это когда данные хранятся в таблицах "не подряд", и для шпинделей это имеет значение, т.к. чтобы считать следующие данные нужно механически подвинуть коромысло на другую дорожку, а не читать все подряд на одной. НО! Во первых, есть контроллер, с его кэшем, который призван нивелировать это дело, а во-вторых, для ССД - это вообще не играет роли. И вообще, все устроено так, что для того, чтобы фрагментация у тебя выросла до 30 или более %, когда она начинает хоть как-то влиять на производительность - нужно очень постараться. Хотя Ну, и, самое главное - учет всех этих нюансов, что называется, не вашего ума дело (это шутка). Заниматься филигранной резьбой по жести приходится, например, когда у вас база на пару терабайт, и ОЗУ гигабайта 32. И даже наиболее используемые индексы в главных таблицах в память не помещаются. PLE уровне эдак 10. А клиент хочет, чтобы это работало. Вот тут всё вспомнишь, и обо всё постучишься. А вы - занимаетесь ерундой. Всё, что может быть решено механическим наращиванием ресурсов - так и должно решаться. Если оптимизация приводит к уменьшению отклика на 1 секунду, при отклике приложения в 10 секунд - в жопу такую оптимизацию. И даже если считать будет на час меньше, а у вас запрос длится сутки - тоже в жопу. Минимизироваться должны твои усилия, а не железяки. :-) Как то так.
0
|
||
|
139 / 105 / 36
Регистрация: 27.07.2022
Сообщений: 357
|
|||
| 25.11.2022, 12:26 | |||
|
0
|
|||
| 25.11.2022, 12:26 | |
|
Помогаю со студенческими работами здесь
20
Настройка Database mail SQL Server 2008R2 на серверах с интернетом и без Остановить синхронизацию в репликации или обновить статус sql server 2008R2? Некорректная работа DNS server на Windows server 2008r2 ad ds Linked server между MSSQL SERVER 2008R2 и 2000 [Microsoft][ODBC SQL Server Driver][SQL Server]Login failed- User: Reason: Not defined as a valid user of a trusted SQL Server connection Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
|
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11
— это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
|
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11
Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
|
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
|
|
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/
O1rJuneU_ls
https:/ / vkvideo. ru/ video-115721503_456239114
|
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ВВЕДЕНИЕ
Введу сокращения:
аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
|
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi
ветка по-частям.
коммит Create переделка под биомассу. txt
вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
|
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ *
Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях.
Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её.
Последовательность действий:. . .
|