среда, 5 марта 2025 г.

Как уменьшить размер mdf файла (MS SQL база данных)

Reduce MDF file size

 Шаг 0) Сокращение ответственности

Я даже не буду этого говорить. Я позволю Бренту Озару сказать вам, чтобы вы перестали уменьшать файлы своей базы данных. Серьезно. Сейчас.

В своих комментариях вы упомянули, что удалили 50% данных в базе, поэтому, скорее всего, у вас есть хороший повод для однократного сжатия базы данных. (При условии, что удалённые данные не вернутся.)

Я даже не буду говорить о сокращении журналов. Мы просто говорим о файлах данных.

Немного opensource'а

ODOO ERP  

Univention Corporate Server



PowerQuery - присвоение ранга

Сегментирование клиентов

let

    sales = Excel.CurrentWorkbook(){[Name="sales"]}[Content],
    rank = Excel.CurrentWorkbook(){[Name="rank"]}[Content],
    func = (sales_tbl, rank_tbl) => 
        [sales_amount = Table.AddColumn(
            sales_tbl, "sales_amount", 
            (x) => if x[Статус покупки] = "Проведена" then x[Стоимость] else 0
        ),
        gr = Table.Group(
            sales_amount, "Покупатель", 
            {{"all", (x) => x}, 
            {"Стоимость", (x) => List.Sum(x[sales_amount])}}
        ),
        combine_rank = gr & rank_tbl,
        sorted = Table.Sort(combine_rank,{{"Стоимость", Order.Descending}, {"Покупатель", Order.Ascending}}),
        fill = Table.FillUp(Table.FillDown(sorted, {"Результат"}), {"Результат"}),
        filter = Table.SelectRows(fill, (x) =>  x[Покупатель] <> null)[[all], [Результат]],
        expand = Table.Sort(Table.ExpandTableColumn(filter, "all", Table.ColumnNames(sales_tbl)), "Дата")][expand],
    result = func(sales, rank)
in
    result

Пример: тут

Источник: здесь