все что связано с моей работой
Главная » Технические » Активный фитнес для СЭД-а

Активный фитнес для СЭД-а

Как уменьшить базу СЭД-а? Решая очередную задачку "Снова СЭД и снова база" обратил внимание что очень долго обрабатывается таблица KCSRNEW целевые статьи, даже дольше чем KBKDRI. Но последнюю я регулярно чищу от удалённых записей (статус=4), для СЭД-а ОФК. Для УФК-шного такое делать не нужно было.

Но факт остается фактом таблица целевых обрабатывается подозрительно долго, тем более что, из всех 4-х справочников, которые мы передаем, целевые по величине третий, и в разы меньше счетов (счетов расходов, доходов и ИФДБ — KBKDRI), которые обработались быстрее.

Если хранение в базе удаленных данных объяснимо, то хранение в нашей базе записей всех бюджетов области, на мой взгляд, желание пойти по самому легкому пути, при обработки всех справочников в одном месте — УФК. Но это мое предположение, я всего не знаю, но я уверен что когда принимали это решение никто не задумывался о размере базы.

Это только исследование, до удаления лишних записей у меня не дошло – сработали другие способы. Но на будущее теперь есть запасной парашют.

Итак, "удаленные" записи уже чистили, а таблица все равно большая. Решил посмотреть сколько "лишнего" в таблице. Вот такой запрос, показывает какие бюджеты и сколько записей по каждому бюджету, код бюджета пригодится позже:

SELECT BUDGETCODE, BUDGETNAMETRUNC, count(*)
FROM dba.KCSRNEW
group by BUDGETCODE, BUDGETNAMETRUNC
ORDER BY BUDGETNAMETRUNC

вот результат:

sql1

Обратите внимание, что некоторые бюджеты (в основном районов) повторяются. Скорее всего это результат слияния, когда управление справочниками забрало УФК.

Как я понимаю, при образовании новых счетов, можно использовать коды федерального, областного и местного (своего) бюджетов. То есть Аксайский район ну никак не может использовать целевые статьи Багаевского района! Учитывая выше сказанное — ищем результатах свой бюджет, записываем код или коды, плюс в самом низу ищем коды федерального и областного бюджета, вписываем все в  where условие следующего запроса. Он покажет сколько в таблице "лишних" записей:

SELECT COUNT(*) AS Expr1
FROM dba.KCSRNEW
WHERE (BUDGETCODE <> 58030002) AND (BUDGETCODE <> 99010001) AND 
      (BUDGETCODE <> 58030020) AND (BUDGETCODE <> 58020464) AND 
      (BUDGETCODE <> 1)

Вот сколько "лишнего" в моей базе.

sql2

 

ЗЫ. Интересно, а как это реализовано в других областях нашей страны. Количество статей в интернете о том, как уменьшить базу очень мало. Это наводит на мысль, что где-то все-таки народ думает прежде чем что-то делать.

Еще раз: Это только мое мнение и возможно я ошибаюсь, потому как не знаю как устроена серверная часть. Да и это уже не очень существенно – есть слушок, что до 1января 2013 все перейдут на АСФК. Не куда девать бюджетные деньги, если будет желание напишу об этом.

Комментариев нет

No comments yet.

RSS feed for comments on this post.

Sorry, the comment form is closed at this time.