Перестроение индексов системной таблицы.

Доступно с лицензией Standard или Advanced.

База данных использует индексы для быстрого нахождения строк, когда фильтр выполняет запрос к базе данных. Большинство системных таблиц базы геоданных имеют индексы, но таблицы, которые, как правило, имеют наибольшее количество изменений в многопользовательской базе геоданных, использующей традиционное управление версиями и поэтому требующей перестроения индексов, чаще всего являются системными таблицами состояний, state_lineages и mv_tables_modified. Как администратор базы геоданных, вы можете перестроить индексы в этих таблицах баз геоданных, используя инструмент геообработки Перестроить индексы.

В активно редактируемой версионной базе геоданных вы можете обновлять индексы в таблицах states, state_lineages и mv_tables_modified в ночное время. Для этого создайте автономный скрипт Python, вызывающий инструмент Перестроить индексы и планирующий его запуск с использованием Планировщика задач Windows или задания cron.

Использование инструмента Перестроить индексы

Чтобы перестроить индексы в системных таблицах базы геоданных states, state_lineages и mv_tables_modified с помощью инструмента Перестроить индексы, необходимо сделать следующее:

  1. Запустите ArcGIS Pro и подключитесь к базе геоданных в качестве администратора базы геоданных.
  2. Откройте инструмент геообработки Перестроить индексы.

    Этот инструмент вы найдете в группе инструментов Администрирование набора Управление данными .

  3. Используйте подключение, созданное в шаге 1, в поле Входное подключение к базе данных.
  4. Отметьте опцию Включить системные таблицы.
  5. Снимите отметку Перестроить только таблицы различий.
  6. Щелкните Запустить.

Планировка запуска скрипта Python

Для запуска скрипта необходимо подключиться к базе геоданных с правами доступа администратора базы геоданных. Существует два способа: создать файл подключения (.sde) и указать этот файл в скрипте, или непосредственно в скрипте ввести инструкцию для подключения. Далее установите расписание для запуска скрипта с помощью компонента Microsoft Windows Назначенные задания или с помощью демон-планировщика задач Linux cron системы Linux.

  1. Скопируйте один из следующих скриптов на компьютер, где установлены Python и один из следующих продуктов ArcGIS:
    • ArcGIS Pro (Desktop Standard или Desktop Advanced)
    • ArcGIS Desktop (Desktop Standard или Desktop Advanced)
    • ArcGIS Engine с дополнительным модулем Geodatabase Update
    • ArcGIS Server

    Измените скрипты, внеся в них информацию о вашем сайте.

    В следующем примере sde-пользователь подключается к базе PostgreSQL:

    # Name: RSysIdxpg.py
    # Description: Rebuilds indexes on the sde_states, sde_state_lineages,
    # and sde_mv_tables_modified tables in an enterprise geodatabase
    # in PostgreSQL.
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    platform = POSTGRESQL
    instance = pg_cluster
    account_authentication = DATABASE_AUTH
    username = gdb_admin
    password = gdb_admin_password
    database = database_name
    
    
    # Set local variables
    if os.name.lower() == "nt":
       slashsyntax = "\\"
       if os.environ.get("TEMP") == None:
          temp = "c:\\temp"
       else:
          temp = os.environ.get("TEMP")
    else:
       slashsyntax = "/"
       if os.environ.get("TMP") == None:
          temp = "/usr/tmp"
       else:
          temp = os.environ.get("TMP")
    
    Connection_File_Name = temp + slashsyntax + "connection.sde"
    
    # Check for the .sde file and delete it if present
    if os.path.exists(Connection_File_Name):
       os.remove(Connection_File_Name)
    
    #Variable defined within the script; other variable options commented out at the end of the line
    saveUserInfo = "SAVE_USERNAME" #DO_NOT_SAVE_USERNAME
    
    print ("Creating Database Connection File...")
    # Create Database Connection File
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, save_user_pass, database
    arcpy.CreateDatabaseConnectionFile_management(temp, "connection.sde", platform, instance, account_authentication, username, password, saveUserInfo, database)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print ("Rebuild Complete")
  2. После занесения в скрипт информации о подключении, запланируйте запуск скрипта в определенный час в ночное время. Откройте утилиту Назначенные задания из Панели управления и используйте мастер для добавления запланированного задания. На запрос указать программу, которую нужно запускать, укажите свой скрипт Python.