Я знаю, что, вероятно, не существует "идеального" решения моего вопроса (это звучит как изменение рюкзака или проблемы с упаковкой в мусорное ведро), но вот мой сценарий:
Я хочуразделить список таблиц базы данных SQL на n (скажем, 7) стопок примерно одинакового размера (чтобы я мог распределить некоторые задачи обслуживания примерно одинаково по всей неделе).
Допустим, у меня есть 100 таблиц (это может быть выше или ниже, но, вероятно, не выше 5000), в диапазоне от 1 до 10 000 000 (большие таблицы, конечно, встречаются гораздо реже).
Моя первоначальная идея состояла в том, чтобы отсортировать таблицы в алфавитном порядке (псевдослучайно), а затем перейти от начала к началу и перейти к следующей группе, когда сумма превысит сумму (размер) / 7.Для некоторых баз данных это, вероятно, будет работать нормально, но если две гигантские таблицы расположены рядом друг с другом, то это создает очень неравные группы.(Это не так уж маловероятно, как кажется, рассмотрим две огромные таблицы: Account_History и Account_History_Archive).
Существуют ли общепринятые методы для этого, которые дают "хорошие" результаты с различными исходными данными?Я бы предпочел более простую технику, чем более точную группировку (если обслуживание выполняется в некоторые дни несколько дольше, чем в другие, это не , что важно).