Для того чтобы организовать торговлю в Интернет-магазине компании потребуется наличие всего одного Менеджера, контролирующего процесс автоматической работы магазина как из офиса компании, так и из любого места в Сети.
Каталог прайсов интернет магазинов - разместите свой прайс бесплатно
  Главная  |    О компании  |    Новости  |    Статьи  |    Форум  |    Клиенты  |    Обратная связь  |    Карта сайта
Добро пожаловать, Гость. Для того, чтобы отвечать на сообщения и создавать новые темы, Вам необходимо зарегистрироваться, если Вы уже зарегистрированы, то войдите используя Ваши E-Mail и Пароль.
Запомнить
Пароль
   
Форум
 SQL Server мелкософт копирайтед » Работа с базой данных
        как безболезненно уменьшить размер базы с разросшимся dbo.TBL_LOG и правильно удалять старые бэкапы
Первая страница 1 2 » Последняя страница
как безболезненно уменьшить размер базы с разросшимся dbo.TBL_LOG и правильно удалять старые бэкапы

28.09.2016 16:05

sonic1978


Пользователь iNETsHOP

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
как безболезненно уменьшить размер базы с разросшимся dbo.TBL_LOG и правильно удалять старые бэкапы?

после удаления бэкапов из папки для бэкапов c:\inetshop они продолжают отображаться в программе
- в администрирование/бэкап
Пользователь оффлайн Распечатать
 

28.09.2016 18:04

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
В настройках программы (в окне "Администрирование") вы можете убрать логирование справочник товаров поставщиков, что так же сократит нагрузку на диск при записи прайс-листа.

Удалить историю справочник товаров поставщиков можно следующим SQL-запросом:
Код

set nocount on;
DECLARE @iS_ID int, @iSG_ID int, @iLOG_ID int, @sLOG_FIELD_NAME varchar(150);
DECLARE cSuppliers CURSOR LOCAL FOR
select
S_ID
from TBL_SUPPLIERS s
-- where s.S_ID = 781
order by s.S_ID
;

OPEN cSuppliers;
FETCH NEXT FROM cSuppliers INTO @iS_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
DECLARE cSuppliersGoods CURSOR LOCAL READ_ONLY FOR
select
SG_ID
from TBL_SUPPLIERS_GOODS sg
where sg.SG_S_ID = @iS_ID;
PRINT @iS_ID;
OPEN cSuppliersGoods;
FETCH NEXT FROM cSuppliersGoods INTO @iSG_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN

DECLARE cLog CURSOR LOCAL READ_ONLY FOR
select LOG_FIELD_NAME
from TBL_LOG l
where l.LOG_TBL_NAME = 'TBL_SUPPLIERS_GOODS'
and l.LOG_PK = @iSG_ID
and l.LOG_TYPE = 2
group by LOG_FIELD_NAME
having count(*) > 1;

OPEN cLog;
FETCH NEXT FROM cLog INTO @sLOG_FIELD_NAME;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
DECLARE cLogValues CURSOR LOCAL READ_ONLY FOR
select l.LOG_ID
from TBL_LOG l
where l.LOG_TBL_NAME = 'TBL_SUPPLIERS_GOODS'
and l.LOG_PK = @iSG_ID
and l.LOG_TYPE = 2
and l.LOG_FIELD_NAME = @sLOG_FIELD_NAME
and not l.LOG_ID in (
select TOP 1 l.LOG_ID
from TBL_LOG l
where l.LOG_TBL_NAME = 'TBL_SUPPLIERS_GOODS'
and l.LOG_PK = @iSG_ID
and l.LOG_TYPE = 2
and l.LOG_FIELD_NAME = @sLOG_FIELD_NAME
order by LOG_DATE DESC
)/* FOR UPDATE*/;

OPEN cLogValues;
FETCH NEXT FROM cLogValues INTO @iLOG_ID;
WHILE (@@FETCH_STATUS <> -1)
BEGIN
BEGIN TRY
BEGIN TRANSACTION;
/*
INSERT INTO TBL_LOG_ARCHIVE ([LOG_ID], [LOG_TBL_NAME], [LOG_PK], [LOG_FIELD_NAME], [LOG_OLD_VALUE], [LOG_TBL_CHILD_NAME], [LOG_NEW_VALUE], [LOG_TYPE], [LOG_DATE], [LOG_USER], [LOG_PK_REF_OLD], [LOG_PK_REF_NEW], [LOG_CHILD_PK])
SELECT [LOG_ID], [LOG_TBL_NAME], [LOG_PK], [LOG_FIELD_NAME], [LOG_OLD_VALUE], [LOG_TBL_CHILD_NAME], [LOG_NEW_VALUE], [LOG_TYPE], [LOG_DATE], [LOG_USER], [LOG_PK_REF_OLD], [LOG_PK_REF_NEW], [LOG_CHILD_PK]
FROM TBL_LOG
WHERE LOG_ID = @iLOG_ID;
*/
DELETE FROM TBL_LOG
WHERE LOG_ID = @iLOG_ID;

COMMIT;
END TRY
BEGIN CATCH
ROLLBACK;
END CATCH;

FETCH NEXT FROM cLogValues INTO @iLOG_ID;
END;
CLOSE cLogValues;
DEALLOCATE cLogValues;

FETCH NEXT FROM cLog INTO @sLOG_FIELD_NAME;
END;
CLOSE cLog;
DEALLOCATE cLog;

FETCH NEXT FROM cSuppliersGoods INTO @iSG_ID;
END;
CLOSE cSuppliersGoods;
DEALLOCATE cSuppliersGoods;

FETCH NEXT FROM cSuppliers INTO @iS_ID;
END;
CLOSE cSuppliers;
DEALLOCATE cSuppliers;


При создании резервной копии базы данных запись об этом событии логируется и соответственно отображается в списке бекапов.

Пользователь оффлайн Распечатать
 

29.09.2016 08:09

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
да, логирование уже догадался отключить, но озадачился этой проблемой только после того как база успела раздуться до 5GB

скрипт запустил, прошло 12 часов, еще не отработал

буду ждать..

спасибо!
Пользователь оффлайн Распечатать
 

29.09.2016 12:07

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
странно, но похоже история всетаки не удалилась после отработки скрипта


Прикрепленные файлы
screen5.png   ( 9 Просмотров | 107.9 KB )
Пользователь оффлайн Распечатать
 

29.09.2016 13:08

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Откройте в программе справочник товаров поставщиков и посмотрите на историю изменений какого-либо товара прайс-листов, там должны остаться только первые и последние записи, а все промежуточные - удалены.
Пользователь оффлайн Распечатать
 

29.09.2016 16:45

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
открыл, посмотрел, не скажу что полностью все промежуточные удалены, но бОльшая часть похоже удалилась.

но проблема с 5ГБ-ными бэкапами то у меня осталась. как были они 5 ГБ так и остались





Прикрепленные файлы
111.png   ( 5 Просмотров | 15 KB )
Пользователь оффлайн Распечатать
 

29.09.2016 17:12

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
На скриншоте изменения товаров в справочнике товаров (каталоге товаров), а не в справочнике товаров поставщиков (товаров прайс-листов).
Пользователь оффлайн Распечатать
 

29.09.2016 18:16

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
в товарах поставщиков не нашел где историю смотреть (( вижу только даты - создан редактирован импортирован
Пользователь оффлайн Распечатать
 

30.09.2016 01:50

Admin


Администратор


Количество сообщений   135
Зарегистрирован:   23-08-2007, 09:03:21
Так же как и в справочнике товаров - внизу окна.
Пользователь оффлайн Распечатать
 

30.09.2016 11:31

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
да, нашел. свернута была нижняя часть. не заметил.

история по товарам поставщиков пуста. но можно ли всетаки уменьшить размер базы?

судя по скрину размер лога стал 1,2 ГБ а зарезервировано таблицами логов 4,8 ГБ.

удаление на размер бэкапа не повлияло
Пользователь оффлайн Распечатать
 

12.10.2016 09:59

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
есть ли вариант уменьшить всетаки уменьшить размер базы данных? удаление логов на размер бэкапов БД не повлияло
Пользователь оффлайн Распечатать
 

13.10.2016 09:38

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Размер базы данных зависит не только от размера самих данных, но и от служебной информации, в частности индексов которые используются для осуществления быстрой выборки данных и могут занимать больше места чем сами данные. Вы можете удалить индексы в таблице логов (TBL_LOG) на свой страх и риск, но тогда мы не сможем принять во внимание какие-либо жалобы о проблемах со скоростью работы программы, записи данных (прайсов, товаров и т.п.).
Пользователь оффлайн Распечатать
 

13.10.2016 11:01

xMaximusx


Посетитель

Количество сообщений   16
Зарегистрирован:   22-04-2016, 18:45:22
Можно отключить логированние товаров в каталоге так же как логирование товаров из прайсов?
Пользователь оффлайн Распечатать
 

13.10.2016 18:31

support


Support


Количество сообщений   1199
Зарегистрирован:   11-04-2008, 19:11:57
Управление логированием в справочнике товаров пока не предусмотрено и не планируется в ближайшем будущем, потому изменения товаров - записываются в базу данных.
Пользователь оффлайн Распечатать
 

06.11.2016 20:44

sonic1978


Пользователь iNETsHOP

Тема начата

Количество сообщений   107
Зарегистрирован:   27-02-2016, 15:29:39
в итоге перенес все в новую пустую базу.

2ALL - мораль всем - если проект предполагается большой - сразу отключать логирование товаров поставщиков. с ежедневным обновлением по 40 поставщикам база как на дрожжах растет

и не заливать каких попало поставщиков ради экспериментов - если уж захотелось - делать это в отдельной базе
Пользователь оффлайн Распечатать
 

Распечатать  |  Следующая тема  |  Предыдущая тема
Перейти
Первая страница 1 2 » Последняя страница  

Статистика форума
Тем: 506, Сообщений: 3222, Пользователей: 2255
Приветствуем новичка по имени Gotit
Ближайшие дни рождения
Сегодня именинников нет


iNETsHOP - программа для формирования каталога товаров интернет-магазина и обработки прайсов Copyright 2007-2015 "Программа iNETsHOP - работа с прайс-листами поставщиков для интернет магазинов ®" iNETsHOP - обработка, объединение, анализ прайсов поставщиков и конкурентов