<?php // Полная загрузка сервисных книжек, создан 2024-01-05 12:44:55
global $wpdb2;
global $failure;
global $file_hist;
///// echo '<H2><b>Старт загрузки</b></H2><br>';
$failure=FALSE;
//подключаемся к базе
$wpdb2 = include_once 'connection.php'; ; // подключаемся к MySQL
// если не удалось подключиться, и нужно оборвать PHP с сообщением об этой ошибке
if (!empty($wpdb2->error))
{
///// echo '<H2><b>Ошибка подключения к БД, завершение.</b></H2><br>';
$failure=TRUE;
wp_die( $wpdb2->error );
}
$m_size_file=0;
$m_mtime_file=0;
$m_comment='';
/////проверка существования файлов выгрузки из 1С
////файл выгрузки сервисных книжек
$file_hist = ABSPATH.'/_1c_alfa_exchange/AA_hist.csv';
if (!file_exists($file_hist))
{
///// echo '<H2><b>Файл обмена с сервисными книжками не существует.</b></H2><br>';
$m_comment='Файл обмена с сервисными книжками не существует';
$failure=TRUE;
}
/////инициируем таблицу лога
/////если не существует файла то возврат и ничего не делаем
if ($failure){
///включает защиту от SQL инъекций и данные можно передавать как есть, например: $_GET['foo']
///// echo '<H2><b>Попытка вставить запись в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>$m_comment));
wp_die();
///// echo '<H2><b>Возврат в начало.</b></H2><br>';
return $failure;
}
/////проверка лога загрузки, что бы не загружать тоже самое
$masiv_data_file=stat($file_hist); ////передаем в массив свойство файла
$m_size_file=$masiv_data_file[7]; ////получаем размер файла
$m_mtime_file=$masiv_data_file[9]; ////получаем дату модификации файла
////создаем запрос на получение последней удачной загрузки
////выбираем по штампу времени создания (редактирования) файла загрузки AA_hist.csv, $m_mtime_file
///// echo '<H2><b>Размер файла: '.$m_size_file.'</b></H2><br>';
///// echo '<H2><b>Штамп времени файла: '.$m_mtime_file.'</b></H2><br>';
///// echo '<H2><b>Формирование запроса на выборку из лога</b></H2><br>';
////препарируем запрос
$text_zaprosa=$wpdb2->prepare("SELECT * FROM `vin_logs` WHERE `last_mtime_upload` = %s", $m_mtime_file);
$results=$wpdb2->get_results($text_zaprosa);
if ($results)
{ foreach ( $results as $r)
{
////если штамп времени и размер файла совпадают, возврат
if (($r->last_mtime_upload==$m_mtime_file) && ($r->last_size_upload==$m_size_file))
{////echo '<H2><b>Возврат в начало, т.к. найдена запись в логе.</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>$m_mtime_file,'last_size_upload'=>$m_size_file,'comment'=>'Загрузка отменена, новых данных нет, т.к. найдена запись в логе.'));
wp_die();
return $failure;
}
}
}
////если данные новые, пишем в лог запись о начале загрузки
/////echo '<H2><b>Попытка вставить запись о начале загрузки в лог таблицу</b></H2><br>';
$insert_fail_zapros=$wpdb2->insert('vin_logs', array('time_stamp'=>time(),'last_mtime_upload'=>0, 'last_size_upload'=>$m_size_file, 'comment'=>'Начало загрузки'));
////очищаем таблицу
$clear_tbl_zap=$wpdb2->prepare("TRUNCATE TABLE %s", 'vin_history');
$clear_tbl_zap_repl=str_replace("'","`",$clear_tbl_zap);
$results=$wpdb2->query($clear_tbl_zap_repl);
///// echo '<H2><b>Очистка таблицы сервисных книжек</b></H2><br>';
if (empty($results))
{
///// echo '<H2><b>Ошибка очистки таблицы книжек, завершение.</b></H2><br>';
//// если очистка не удалась, возврат
$failure=TRUE;
wp_die();
return $failure;
}
////загружаем данные
$table='vin_history'; // Имя таблицы для импорта
//$file_hist Имя CSV файла, откуда берется информация // (путь от корня web-сервера)
$delim=';'; // Разделитель полей в CSV файле
$enclosed='"'; // Кавычки для содержимого полей
$escaped='\
Спасибо, полезно!
Спасибо, то что надо!
При индексации блокируется только таблица, незачем делать ее в режиме тестирования и исправления.
Еще бы добавил, что неплохо было бы выставить в свойствах сетевого соединения сервера для компоненты «Служба доступа к файлам и принтерам сети Microsoft» оптимизацию не для файлов а для сетевых приложений.
Нифига не понял в формуле расчёта максимального количества памяти.
Полезная статья. Но в расчет памяти я что то тоже не врублюсь
С какой целью делается DBCC SHRINKFILE (N'<ИмяБД>_log’ , 0), если у вас recovery model = simple?
Время выполнения операций, заявленное в обзоре, сильно зависит от размера самой базы; переиндексация на базах больше сотни Гб может длиться дольше часа.
(8) Вот поэтому она и сделана на ночь с воскресения на понедельник с 01:00… Люди начнут работать все равно не раньше 08:00
(5) (6) Добавил пример.
(7) Были преценденты, что лог не урезался, решили добавить ручное «обрезание».
(11) а зачем вообще урезание? чем меньше операций по выделению места под файлы данных/лога, тем меньше тормозов
А что такое «Общее количество памяти сервера»? Это размер ОЗУ? Но цифра в примере непонятная.
(12) Лог, без урезания, начинает сильно фрагментироваться (куча маленьких свободных/занятых кусков внутри файла), что негативно сказывается на работе.
(13) Да, это размер ОЗУ.
(14) Формула интересная, только вот по ней у меня на сервере нужно установить значение -1 ГБ (т.е. отрицательное значение). 😥
(15) Во-первых ваша ссылка для 7ки (кстати тоже неоднократно посещалась при поиске информации), во вторых никакого геморроя с восстановлением — раз в 2 дня в тестовую базу восстанавливаем: 20 минут из полного файла, 15 минут из diff файла и готовая база примерно на час отстающая от рабочей. А вот при полной модели бэкапа (full а не simple), какраз имеете огромный геморой с восстановлением, т.к. если лог натянете на полный бэкап, то diff не встанет, если diff натянете, то лог не встанет… целостность базы нарушена полюбому. А в simple-модели бэкап лога не нужен.
(16) Если у вас rphost’ы максимум по 500 МБ отъедают памяти в процессе работы, то столько им и оставляйте. Сдесь взято по максимуму и у нас они действительно по столько иной раз занимают (правда не видал, когда все одновременно, но чем чорт не шутит…)
Помимо размера и log рабочей базы
необходимо также настраивать размер и log базы tempdb
Размер этой базы должен составлять от 25% до 40% самой большой базы данных
Лучший вариант размещения базы данных tempdb – на отдельном диске или дисковом массиве RAID0 (эта база данных не нуждается в восстановлении).
Приращение лога для temdb — обязательно не в процентах.
Про Максимальное количество потоков ставим 4096 ИХМО вы что-то перемудрили.
Ставя явно 4096 Вы резервируете для sql сервера пул рабочих процессов.
Если общее количество подключений к серверу меньше этого числа то каждому подключению выделяется свой рабочий поток иначе для коннекта назначается поток из пула.
Т.е если к примеру у Вас общее число подключений к серверу меньше 2000 то 4096
ставить неправильно так как каждый рабочий поток резервирует память ( об этом косвенно говорит и тот факт что для изменения параметра нужна перестартовать sql сервер).
Как действует значение 0 точно не скажу это надо отдельно разбираться взависимости от
(select @@version) версии sql (2000,2005,2008)
(18) Насчет размещени tempdb вы абсолютно правы, а вот насчет размера — это довольно спорный вопрос… одно время, еще на старом сервере с небольшим объемом оперативы когда работали, у нас для базы в 6 ГБ tempdb разростался до 30 ГБ, и когда мы решили ограничить размер tempdb до 6 ГБ, то при достижении указанного размера сервер просто вставал, спасал только полный ребут. а без ограничения кое-как работал, правда тормозил неподетски. Вообще конечно продукты MS очень требовательны к ресурсам и очень часто первоопределяющий фактор — быстродействие сервера и наличие рэйда.
(19) Возможно число можно указать и поменьше, но памяти процессы резервируют по минимуму и не факт, что стартуют при отсутствии подключений, а вот когда 2 подключения на один поток садятся, то у людей начинаются ториоза, ИМХО число лучше сразу задать как можно больше. Темболее ожидается увеличение количества пользователей до 400-500 человек, и каждый ведь может по несколько раз 1С запустить… + регламентные задания, роботы всякие и т.п.
(20) насчет размера согласен.
Просто эта цифра 25-40% это как общая рекомендация.
Точное значение надо подбирать индивидуально для каждого сервера.
Если есть какая нибудь методика то с удовольствием с ней познакомился бы.
Тут как всегда компромис чем больше размер тем лучше. Но дисковое пространство сервера как правило очень дорогой ресурс и его надо как-то ограничивать.
Как выставлять приращение log для tempdb точно не знаю но желательно чтобы sql
делал это редко.
(21) Если пользователь запустил несколько сессий то не факт что он в них одновременно работает. Т.е если у Вас 95% времени выполняется 2000 активных соеденений ( которые что-то считают ) то и выставлять надо 2000. Выставляя 4096 Вы отбираете у sql сервера память и он не сможет её(память) использовать под свои задачи.
Я исхожу из своих знаний на основе sql200,sql2005 Как резервируется память
под это дело в sql2008 я точно не знаю ( думаю что также)
Также надо учитывать и возможности сервера.Предположим что конкретный сервер не может одновременно обслуживать более 3000 потоков. В таком случае ставить 4096 тоже бессмысленно.
Про значение 0
В sql2000 это равно 255 рабочим потокам
В sql2005 ( и наверное sql2008 ) 0 означает что sql сервер сам по внутреним алгоритмам динамически меняет количество рабочих процессов. Для каких то нагрузок это может и хорошо для каких-то не очень хорошо.
При любых других (не 0 ) значениях я считаю что память под рабочие процессы выделяется статически при старте sql сервера.
полезные штуки
(24) Кстати SQL умеет распараллеливать запросы, т.е. 1 большой запрос может идти в несколько потоков.
(25) это тоже надо настраивать отдельным параметром
и как правило не рекомендуют ставить значение больше 5.
Фишка в том что при большом распаралеливании sql начинает слишком много времени тратить на само планирование и разбиение запроса вместо его выполнения
и общая производительность падает вместо ожидаемого роста.
(26) Да, мы тоже сперва MaxParallelism в 5 выставили, но с 0 на замерах производительности большие запросы быстрее обрабатывались…
Хи-ха, Я работаю с базами от 40 -120Gb и я посмотрел бы с удовольствием на Ваши действия при падении Log файла или файла базы. Все это очень хорошо при небольших базах , но они имеют дурную привычку быстро расти и при этом начинаются другие проблемы
Все здорово, осталось только видео сделать и на Ютруб выложить. 😉
Boost priority — что дает?
Сервер 1С находится вместе с сиквелом?
почему минимум = 0?
наверно слишком пафосно «правильная настройка», скорее «настройка для случая Х»
еще многе зависит от операционки, разрядности и т.п.
вцелом труд в правильном направлении сделан, хотя некоторые выводы необоснованы
(30) Boost priority — увеличивает приоритет сервера.
Да, сейчас 1С и SQL вместе находятся. До недавнего времени на разных машинах висели, но настройки оптимальные были такими-же…При переносе SQL на сервер, где 1С вращается, производительность чуть-чуть возросла, хотя сервера были по мегабитному каналу связаны.
Насчет разрядности вы правы, на 32х все равно больше 4 ГБ оперативы не увидит операционка, и тут уже смысла нет память ограничивать, или 3-3,5 ГБ ограничение ставить, т.к. ее итак нет.
(28) Может поделитесь какие проблемы могут возникнуть?
Файл базы у нас падал, и мы его никак не смогли восстановить. Пришлось поднимать базу из бэкапа, перед этим скопировав базу с логом на тестовый сервер… Для аттача этой базы никакие шаманские действия не помогли. Скачал утилиту от MS, которая, типа, битые базы поднимает, она за неделю 50% файла обработала, при том на каждой второй операции сообщала об ошибке… Остановил процесс за ненадобностью.
(31)
— в этом вы не правы. Серверная x32 ОС видит больше 4 Гб памяти, для того чтобы SQL-сервер мог адресоваться к памяти выше 4 Гб необходимо включить AWE (см. скриншот 1)
(33) Там страницы по 4 ГБ получаются и обращение к памяти медленно работает. Смысла нет 32х разрядную ось ставить на сервер, где больше 4 ГБ памяти.
(34) никто не спорит, но и писать что операционка больше 4Гб не видит — тоже не стоит
(31)
Ну увеличивает. А как это сказывается (в цифрах и фактах пожалуйста).
На счет настройки памяти не соглашуюсь. На отдельно стоящем сиквеле и совмещенном настройки памяти разные.
Опять таки, зачем на отдельно стоящем скуле вообще приоритет повышать.
При переносе SQL на сервер, где 1С вращается, производительность чуть-чуть возросла, хотя сервера были по мегабитному каналу связаны.
Сколько сетевух на сервере? Может быть пора посмотреть 10гигабитку.
К тому же не всегда есть возможность и целесообразность совмещать.
А то Вас тут почитают и таких дров наломают.
Но это так, непринципиальная критика. Просто не хотелось бы рядом с дельными советами видеть «отсебятину». Т.е. лучше меньше советов, но максимально дающих эффект.
Не хорошо писать письма без обратного адреса.
а по делу- по комментируйте(дело было в понедельник 15 февраля), что и как вы по Вашей схеме будете восстанавливать:
ЗАГОЛОВОК: Microsoft SQL Server Management Studio
——————————
Не удается вывести требуемое диалоговое окно.
——————————
ДОПОЛНИТЕЛЬНЫЕ СВЕДЕНИЯ:
Не удается вывести требуемое диалоговое окно. (SqlMgmt)
——————————
SQL Server обнаружил логическую ошибку ввода-вывода, связанную с согласованностью: неверный идентификатор страницы (ожидаемый 1:712; фактический 0:0). Она произошла при прочитать страницы (1:712) в базе данных с идентификатором 4 по смещению 0x00000000590000 файла «C:Program FilesMicrosoft SQL ServerMSSQL.1MSSQLDATAMSDBData.mdf». Дополнительные сведения см. в журнале ошибок SQL Server и журнале системных событий. Это серьезная ошибка, которая угрожает целостности базы данных и должна быть немедленно исправлена. Выполните полную проверку базы данных на согласованность (DBCC CHECKDB). Эта ошибка может быть вызвана многими причинами; дополнительные сведения см. в электронной документации по SQL Server. (Microsoft SQL Server, ошибка: 824)
Чтобы получить справку, щелкните:http://go.microsoft.com/fwlink?ProdName=Microsoft+SQL+Server&EvtSrc=MSSQLServer&EvtID=824&L inkId=20476
——————————
КНОПКИ:
ОК
В дополнение предыдущему:
— работающий магазин, остановка очень догая и начальство за спиной стоит
— Win 2003/32, sql 2005/32, 1c 8.1, база ~100Gb
— техника обычная для нашего бизнеса.
(37) (38) Дак по-английски ведь написано, что железо сбоит. У нас одно время сервак тупо ребутался, как будьто кто-то резет жмет 2-3 раза в день, в логах винды писал только что «завершение работы было неожиданным…» спас только переезд на другой сервер и отказ от xen-подложки, т.е. без виртуальной машины ща работает. Другие виртуалки на той-же винде на том-же сервере нормально работают, не перезагружаются. Майкросовтовские продукты могут неожиданно себя вести при каких-то железных сбоях и вообще ничего не сообщать и в логи не писать. А по поводу лечения — базу с бэкапа на новом серваке поднять.
Любые статьи и комментарии по этой теме и по существу, весьма полезны! Подчерпнул пару полезностей из статьи и коментов! Всем спасибо! Больше бы таких статей и коментов!
Мда, расчет по ограничению памяти сервера действительно спорный получился.
А какие есть мнения по поводу параметра «Max Degree of Parallelism» ❓
Это напрямую должно влиять на производительность.
Дык по английски мы читать не умеем!!!
А восстановление заняло 5 минут. Всего лишь упал Log у Master.
Какой переезд на другой сервер, какой ребут, я же писал магазин, работающий 24 часа
А вообще по жизни, был хороший ресурс, но теперь для поднятия рейтинга постят ВСЕ. Хорошо если читает грамотной, он разберется ,что к чему, а новичек, прочтет сделает по данной схеме получит геморой в лучшем случае или увольнение после очередного падения сервера
Читайте и думайте.
(42) Конечно надо в первую очередь логи SQL посмотреть, а не одно сообщение хз откуда.
Ресурс стараемся поднимать, статья впервую очередь была написана как хорошая тема для обсуждения, для того, чтобы народ делился опытом. Если можете какие-то тезисы опровергнуть, то говорите. Если можете написать лучше — пожалуйста. Здесь я ни одной подобной статьи не встречал, вот и решил написать.
(42) Что в настройках вам не нравится? Из-за чего при таких настройках может упасть сервер? При чем тут падение лога у мастера, если тут про настройки системных таблиц вообще ничего не говорится?
Почти к такому же алгоритму построения SQL пришел сам еще задолго до данной статьи, по алгоритму все хорошо, еще добавил ежечастно очистку процедурного кеша, а остальное почти по алгоритму автора, по этому однозначно + и статья имеет достойное место быть вне зависимости от некоторых комментов! Побольше бы таких заний писали, а не негативной критики!
(45)
— что это такое и как делается?
(46) В агенте выставляется команда для базы
DBCC FREEPROCCACHE
Удобно раз в час, описание можно найти на официальном сайте, выполнять команду рекомендует 1С.
(47) пока ссылку на офицальном сайте, что это рекомендуется все делать
ты хотя бы понимаешь, что удаляешь скомпилированные запросы этим ?
(48) Во время сбора статистики кэш автоматически чиститься? Для проверки надо включить, потестить как оно отрабатывать будет.
Можно ламмерский коммент?
36 гигов оперативки на сервере это круутааа 🙂 У нас 2 гига и Win2003. Так и живём :{}
(50) Тут коммерческому предприятию гордиться нечем. У большинства ноутбуки уже мощнее будут.
(49) причем тут статистика и кэш?
надо просто понимать рекомендации, а не только тупо их выполнять
если объем данных изменяется не сильно, то очистка процедурного кэша скорее зло, так как скулю придется компилировать запрос заново
именно поэтому у админов есть термины типа «прогретый кэш», потому что все необходимые данные подняты в кэш и скомпилированы запросы
т.е. при первом запуске когда кэши «холодные» запросы исполняются дольше
резюмирую: процедурный кэш надо чистить не ради чистки, а если вы видите что система очень сильно загруженно и очитска кэша ускоряет общую производительность (т.е. когда заново скомплированный запрос работает с новыми условиями типа статистики, объемов строк, индексами и т.п.)
(52) Включил очистку раз в сутки система начала тормозить по утрам. Полезная фича получается, если делать ее раз в неделю (после переиндексации) — скомпилированные запросы ссылаются на старые индексы и очистка кеша ускоряет работу.
А разве Полная переиндексация не включает в себя Дефрагментацию индексов?
(54) я не знаю что значит Полная,
перестройка индексов — это удаление индекса и создание его заново.
После этой процедуры дефрагментировать дополнительно нечего, уже все упорядочено в момент создания.
(55) Я так понимаю, что под Полной автор имел ввиду «Rebuild Index», а дефрагментация — это «Reorganize Index». Вот меня и смутила фраза «…естественно после полной переиндексации сразу же делается дефрагментация индексов и обновление статистики.» — это уже не требуется.
(56) вот поэтому я думаю, что статья называется «как правильно» слегка неадекватно, скорее опыт удачной настройки 🙂
Тем не менее — статья очень полезная! Плюсы заслуженные!
(58) полезность штука субъективная,
http://kb.1c.ru/articleView.jsp?id=13 куда правильней называется «регламентные операции», а не как правильно делать регламентные операции 🙂
вот
(57),(59)
Молодец! и даже
Критерий оптимальности указал!!!:
1. MS SQL для круглосуточной работы
2. более, чем 200 пользователей одновременно
Все ясно и понятно если MS SQL для круглосуточной работы И более, чем 200 пользователей одновременно —-> пользуйся этой статьей.
Эта инструкция на 200 и больше пользователей. А что изменить в этой инструкции на 50 пользователей
(63) на 1000 пользователей с такими настройками скуль просядет, тем более что на таких масштабах настройки базы также начинают играть ключевую роль!
(61) я бы занизил количество соединений в параметрах как минимум
(63) А не могли бы подсказать, какие настройки необходимо поменять на 1000 пользователей? Из-за чего скуль просядет? Поможет ли скуль при работе с 1С «ALTER DATABASE Database SET ALLOW_SNAPSHOT_ISOLATION ON;» для уменьшения количества блокировок?
(65) нет, не хочу
то что я считал нужным расказать публично, я выкладываю на свой сайт gilev.ru
все что считаю конкурентным преимущество, я «продаю» на курсах или ввиде консалтинговых услуг
но если кто сомневается, что скуль просядет на 1000 юзерах, попробуйте сами…
(66) Интересно, что вы преподаете такое на курсах, если про вас говорят пацаны из Олми, что вы код ногами пишите?
(67) Напишите на почту gilev.ru собачка gmail.com, что КОНКРЕТНО Вас интересует. Я попробую ответить.
http://www.spec8.ru/
Надеюсь, не путаете меня с однофамильцем
(68) Да, похоже действительно однофамилец.
(66) это конечно может быть и верно, но уже не первый раз замечаю, что вы влазите в ветку, начинаете говорить что все неправильно, и что вы знаете как сделать лучше в разы. При этом по делу — ноль, одни туманные фразы типа «скуль просядет», а почему просядет — это уже за деньги. Если это ваш способ рекламы, то он, мягко говоря, гниловат. Если вы решаете написать в ветку, будьте готовы подтвердить вашу критику дельными советами, а если ваша цель — завлечь людей на свой консалтинг, то завлекайте на своем сайте, нефиг тут воду мутить.
то что надо как раз! Спасибо автору!
В настройках базы на скрине выключена корреляция дат. ИМХО, надо бы включить.
про Максимальное количество потоков по-умолчанию ссылка:
MSSQL max worker threads на msdn
Вроде неплохие базовые настройки, плохо конечно, что без описания почему-куда, тут gilv верно отметил.
спасибо автору, т.к. настройка скл сервера это явно опыт, когда ты поняла косяки и их правишь. а если не знаешь, да в основном в статьях используют типовые, то конечно ошибаешься
Почему в настройках базы Auto Shrink стоит False, а не True?
Я обычно взвожу этот флаг.
(75) Shrink базы данных довольно затратная процедура, при круглосуточной работе пользователей тормозит базу и мешает людям работать. Если БД постоянно растет, смысла в этой процедуре вообще нет, т.к. SQL использует сперва уже выделенное под БД освободившееся дисковое пространство. Да и выделение нового пространства после Shrink’а затратная процедура… Вобщем, при необходимости (свертка или чистка неиспользуемых регистров) сжать файлы можно и вручную.
Спасибо за статью, думал, что настроил свой вариант «скуль+восьмерка» нормально — ан нет, пойду вносить коррективы.
Спасибо. Лишний раз, для спокойствия, перепроверил параметры скуля.
Кстати, встречалась информация, что связка WinServer2008+MSSQL2008R2+1C8.1 (да и 8.2) дают значительно большие тормоза, чем более ранние версии скуля и винды. Даже тесты делались, дважды тестировали на одном железе, но с разным софтом:
1
Win2003 (32bit) + SQL 2005
Первый тестовый запуск 3:30
Второй тестовый запуск 2:30
2
Win2003 (32bit) + SQL 2005 + оптимизации
Первый тестовый запуск 3:30
Второй тестовый запуск 2:30
3
Win2008R2 + SQL 2008 + 1C x64
Первый тестовый запуск 5:30
Второй тестовый запуск 4:30
4
Win2008R2 + SQL 2008 + 1C x86
Первый тестовый запуск 5:30
Второй тестовый запуск 4:30
5
Win2008R2 + SQL 2005 + 1C x64
Первый тестовый запуск 5:20
Второй тестовый запуск 4:15
6
Win2008R2 + SQL 2005 + 1C x86
Первый тестовый запуск 5:20
Второй тестовый запуск 4:15
7
Win2003 (32bit) + SQL 2005
Первый тестовый запуск 3:15
Второй тестовый запуск 2:20
спасибо за статтю. а как часто нужно делать дефрагментацию дисков с БД и логом? или нужно вобще?
(78) Jackman, интересно, а
Win2003R2(х64) + SQL 2005 + 1C x64
какие показатели выдаст?
спасибо
(79) Для файловой системы NTFS дефрагментация в принципе не обязательна. Да и на FAT она дает прирост производительности когда часто записывается / удаляется / перезаписывается большое количество мелких файлов. А база данных храниться в двух больших файлах, дефрагментация ничем не поможет.
(78) (80) Здесь же на инфостарте встречал публикацию (правда найти сейчас не могу, может быть так-же в комментариях было где-то), в которой говорилось о том, что Win 2008×64 + SQL 2008×64 дают большую производительность, чем 2003. Насколько я знаю в 2008 винде очень сильно переписана процедура работы с файловой системой, ускоряющая работу с файлами если не на порядок, то в разы точно. И результаты таких тестов являются частным случаем для конкретного оборудования. Если на сервере 2 ГБ памяти, то и дибилу понятно что поставив туда 2008-е вин и скуль, вы снизите производительность в разы, по сравнению с 2003-ми.
Вобщем желательно самому на своем оборудовании протестировать и решить с чем работать комфортнее. Да и поддержка M$, обновления и т.п. для 2008-х покачественнее, ИМХО.
Батенька, Вы бы хоть ИМХО добавляли, чтобы безапелляционно делать такие утверждения. Не нужен дефраг на современных винтах с размером больше терабайта? ну-ну… 🙂
ага, посмотрю как головки будут хрустеть, когда идет полнотекстовый поиск на базёнке размером под сто гектар (волею судеб распухшей вперемешку с другим хламом на разделе)…
(85) Ставь RAID и хрусти веселей 😉 дефрагментация тебе не поможет, т.к. ФАЙЛ БД ОДИН, и головки будут летать +- 100ГБ пространства что при фрагментированном файле, что при файле одним куском. И не храни хлам рядом с базой. С хламом после дефрагментации все равно дырки останутся из-за особенностей файловой системы.
(86) вам правильно указали, что дефрагментация нужна:
1) если база стоит с ОС
2) если база не одна, а SQL обслуживает еще много чего.
Когда есть отдельный РЭЙД только под базу, есть возможность этот рейд «защищать» от вопросов начальства («а че это у вас пустой рэйд токо с одной базой!?») — замечательно.
Но именно это нужно указать в примечаниях к «дефрагментация не нужна!»
Дефрагментация — это накладные расходы использовыания файловых систем виндовс, в линуксах и прочих никсах создатели ФС заранее постарались свести к минимуму как саму фрагментацию, так и её последствия.
Т.е. опять же, кто сидит на 1С и Линуксе (Posgre) — тоже могут об дефрагментации не думать.
(25)
SQL-то умеет, только какой в этом прок, если этого не умеет 1С-сервер?
(26) _Z1,
Ничего подобного.
Опция Maximum Degree of Parallelism — работает с устройствами, а не параллелит обработку данных по нитям процессов.
И поэтому рекомендуют как раз исходить из количества рабочих процессоров и так выставлять Maximum Degree of Parallelism, чтобы некоторое их количество оставалось не занятыми для других дел, если SQL вдруг решит распараллелить какую-то задачу и нагрузить процессоры.
Вот поэтому и падала производительность — все процессора занримались для некоей «параллельной» обработки.
(27)
0 — это максимальный параллелизм. В тестовых «забегах» максимальное использование ресурсов процессоров для получения блоков данных параллельно эффект дает, а в реальной работе — нет. И все благодаря использованию 1С-сервера.
Почему — смотрите выше.
А вообще — для настройки и администрирования SQL администратору нужно читать по каждому параметру отдельно, что, зачем и почему. Или ставить все по умолчанию.
(66) gilv, А как определить что скуль просел от тысячи пользователей? А то что то абдекс говорит что все нормально с 1с что я делаю не так ? 😀
(11)
прецедент, инцидент, претеНдент
(52) Вообще хотелось бы процедурный кэш не очищать, а «скорректировать» с учетом обновленной статистики, возможно ли это не подскажете? Иными словами хочется чтобы кэш оставался «прогретым» но с учетом данных обновленной статистики.
(11) насильное уменьшение файла журнала (ректально — DBCC SHRINKFILE), при любом значении recovery model — это глупость, расплата за нее — падение производительности. Я, кстати, DBA (Oracle, MSSQL) со стажем 10 лет, доку по SQL-серверам перечитал вдоль и поперек, и не только доку. Знаю техн. подробности того как движок БД работает с журналом при выполнении транзакции, как происходит создание бэкапа, как происходит восстановление базы из бэкапа и т.д. и т.п. все перечислять места не хватит. Правильно делать так — размер журнала задать такой чтобы увеличение размера файла журнала было крайне (!!!) редким событием. Если не делаете бэкап журнала (допускаю, что вы не знаете зачем это делать), то не ставьте recovery model = full , оно вам ничего не даст, юзайте recovery model = simple
(57) «правильная» настройка сервера зависит от нагрузки и многих обстоятельств. Автору статьи следовало дать название «Как я поковырялся в параметрах своего сервера MSSQL и меня за это не казнили». Кстати, у вендора на сайте есть специальные документы по анализу производительности сервера «White papers» про «Performance Tuning»
(234)
Преамбула: (из анекдота) «Ты не выделывайся. Пальцем покажи!»
Фабула: Если нет возможности/сил/желания идти вашим 10тилетним путём, то какой приговор вы нам, простым смертным, даёте? Иными словами, если мы не участники Формулы-1 и не стоит вопрос о тюнинговании базы данных на молекулярном уровне, можете дать усредненный рецепт по открыживанию настроек с минимальным пояснением «почему так выставили зажигание»?
Послесловие: можно не делать бакап журнала и при этом знать, почему это не делаем!
(238) 1) Не пытайтесь объять необъятное. 2) Научитесь использовать то, что есть в самой платформе 1С — индексирование, регистры, агрегаты — это все придумано для ускорения работы, владение этими средствами творит чудеса. 2) Правильный совет по настройке SQL-сервера зависит от величины нагрузки на сервер. Советы по настройке «на все случаи жизни» — это ложь. Самый важный показатель скорости работы 1С — время реакции. Если для бизнеса время реакции 1С приемлемо, то не имеет значения насколько железка нагружена/перегружена т.е. плевать на счетчики производительности, хотя они могут зашкаливать. Если время реакции 1С стало неприемлемо велико, только тогда надо искать ответ на вопрос «что мы делаем не так?»
(9)Ох, «не факт». Если это, например, предприятие пищевой промышленности, которое работает без выходных, то очень трудно найти «окно» в работе пользователей.
(249) кто хочет тот найдет, кто не хочет, тот придумает почему нельзя найти
некоторые регламенты нужно делать не зависимо от того «как кому то хочется работать»
вы что бэкапы к примеру не будете делать из-за того что 24х7 ? ну-ну
если у вас за ночь не успевает дефрагментация — значит вам надо перепроектировать структуру хранения данных, обрезать периодически базу, увеличивать скорость записи дисков и другие элементарные действия, а не ныть
(37) обнаружили что на сервере стоят разные версии MSSQL.
Когда запустил версию на который БД 1С вертятся, все открылось.