Перенаправьте ConfigurationManager в другой файл

Зависит, что Вы подразумеваете "под размером таблицы". Таблица не касается определенного файла в файловой системе. Таблица будет находиться на табличной области (возможно несколько табличных областей, если она будет разделена, и возможно несколько табличных областей, если Вы также хотите принять во внимание индексы на таблице). Табличная область будет часто иметь несколько таблиц в ней и может быть распространена через несколько файлов.

, Если Вы оцениваете, в каком количестве пространства Вы будете нуждаться для будущего роста таблицы, затем avg_row_len умноженный на количество строк в таблице (или количество строк Вы ожидаете в таблице) будет хорошее руководство. Но Oracle оставит некоторое пространство свободным на каждом блоке, частично чтобы позволить, чтобы строки 'выросли', если они будут обновлены, частично потому что не может быть возможно соответствовать другой всей строке на том блоке (например, 8K блок только соответствовал бы 2 строкам 3K, хотя это будет экстремальным примером, поскольку 3K намного больше, чем большинство размеров строки). Таким образом, БЛОКИ (в USER_TABLES) могли бы быть лучшим руководством.

, Но если бы у Вас было 200 000 строк в таблице, удалил половину из них, затем таблица все еще 'владела' бы тем же количеством блоков. Это не выпускает их для других таблиц для использования. Кроме того, блоки не добавляются к таблице индивидуально, но в группах, названных 'степенью'. Таким образом, там обычно будут EMPTY_BLOCKS (также в USER_TABLES) в таблице.

5
задан Sathyajith Bhat 19 June 2012 в 11:42
поделиться

1 ответ

Я наконец понял это. Существует общедоступное задокументированное средство для этого, но оно спрятано в глубинах инфраструктуры .Net. Для изменения вашего собственного файла конфигурации требуется отражение (не более чем обновить ConfigurationManager); но можно изменить файл конфигурации домена приложения, который вы создаете с помощью общедоступных API.

Нет, спасибо за отправленную мной функцию Microsoft Connect, вот код:

class Program
{
    static void Main(string[] args)
    {
        // Setup information for the new appdomain.
        AppDomainSetup setup = new AppDomainSetup();
        setup.ConfigurationFile = "C:\\my.config";

        // Create the new appdomain with the new config.
        AppDomain d2 = AppDomain.CreateDomain("customDomain", AppDomain.CurrentDomain.Evidence, setup);

        // Call the write config method in that appdomain.
        CrossAppDomainDelegate del = new CrossAppDomainDelegate(WriteConfig);
        d2.DoCallBack(del);

        // Call the write config in our appdomain.
        WriteConfig();

        Console.ReadLine();
    }

    static void WriteConfig()
    {
        // Get our config file.
        Configuration c = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

        // Write it out.
        Console.WriteLine("{0}: {1}", AppDomain.CurrentDomain.FriendlyName, c.FilePath);
    }
}

Вывод:

customDomain: C:\my.config
InternalConfigTest.vshost.exe: D:\Profile\...\InternalConfigTest.vshost.exe.config
9
ответ дан 14 December 2019 в 01:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: