ArcGIS Desktop

  • ArcGIS Pro
  • ArcMap

  • My Profile
  • Справка
  • Sign Out
ArcGIS Desktop

ArcGIS Online

Картографическая платформа вашей организации

ArcGIS Desktop

Полноценная профессиональная ГИС

ArcGIS Enterprise

ГИС предприятия

ArcGIS for Developers

Инструменты для встраивания приложений с местоположениями

ArcGIS Solutions

Бесплатные шаблоны карт и приложений для отрасли

ArcGIS Marketplace

Получение приложения и данных для вашей организации.

  • Документация
  • Поддержка
Esri
  • Войти
user
  • Мой профиль
  • Выход

ArcMap

  • На главную
  • Начало работы
  • Карта
  • Анализ
  • Управление данными
  • Инструменты
  • Дополнительные модули

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

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

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

База данных использует индексы для быстрого нахождения строк, удовлетворяющих фильтру предиката запроса. У большинства системных таблиц базы геоданных есть индексы. Но в версионной многопользовательской базе геоданных есть таблицы, которые изменяются с наибольшей частотой. Для таких таблиц требуется наиболее частая перестройка индекса. Это следующие системные таблицы: states, state_lineages и mv_tables_modified. Как администратор базы геоданных, вы можете перестроить индексы в этих таблицах баз геоданных в IBM DB2, Microsoft SQL Server, Oracle или PostgreSQL используя инструмент геообработки Перестроить индексы.

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

Подсказка:

Инструмент Перестроить индексы также может использоваться владельцами данных для построения атрибутивных и пространственных индексов в их данных. Для получения дополнительной информации см. Перестроение индексов в наборе данных.

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

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

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

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

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

Запланируйте запуск скрипта Python

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

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

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

    В приведенном образце скрипта содержится информация, необходимая для подключения к базе данных Oracle, для обновления индексов системных таблиц states, state_lineages и mv_tables_modified:

    # Name: RSysIdxOracle.py
    # Description: Rebuilds indexes on the states, state_lineages,
    # and mv_tables_modified tables in an enterprise geodatabase
    # in Oracle.
    
    # Author: Esri
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    database_platform = Oracle
    instance = Oracle_instance
    account_authentication = OPERATING_SYSTEM_AUTH | DATABASE_AUTH
    #Leave username and password blank if using OPERATING_SYSTEM_AUTH
    username = gdb_admin_user_name
    password = gdb_admin_password
    version = sde.DEFAULT
    
    
    # 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
    saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
    
    print "Creating database connection file..."
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, saveUserInfo, version, saveVersionInfo
    arcpy.CreateDatabaseConnection_management(temp, "connection.sde", database_platform, instance, account_authentication, username, password, saveUserInfo, version, saveVersionInfo)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print 'Rebuild Complete'
    

    В приведенном образце скрипта содержатся инструкции для подключения авторизованного dbo-пользователя операционной системы к SQL Server и обновления индексов системных таблиц sde_states, sde_state_lineages и sde_mv_tables_modified:

    # Name: RSysIdxSqlServer.py
    # Description: Rebuilds indexes on the sde_states, sde_state_lineages,
    # and sde_mv_tables_modified tables in an enterprise geodatabase
    # in SQL Server.
    
    # Author: Esri
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    database_platform = SQL_Server
    instance = dbms_instance_name
    account_authentication = OPERATING_SYSTEM_AUTH | DATABASE_AUTH
    database = database_name
    #Leave username and password blank if using OPERATING_SYSTEM_AUTH
    username = gdb_admin_user_name
    password = gdb_admin_password
    version = sde.DEFAULT
    
    
    # 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
    saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
    
    print "Creating database connection file..."
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, saveUserInfo, database, version, saveVersionInfo
    arcpy.CreateDatabaseConnection_management(temp, "connection.sde",  instance, account_authentication, username, password, saveUserInfo, database, version, saveVersionInfo)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print 'Rebuild Complete'
    

    В следующем примере 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.
    
    # Author: Esri
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    database_platform = PostgreSQL
    instance = PostgreSQL_servername
    database = database_name
    account_authentication = DATABASE_AUTH
    username = gdb_admin_user_name
    password = gdb_admin_password
    version = sde.DEFAULT
    
    
    # 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
    saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
    
    print "Creating database connection file..."
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, saveUserInfo, database, version, saveVersionInfo
    arcpy.CreateDatabaseConnection_management(temp, "connection.sde",  instance, account_authentication, username, password, saveUserInfo, database, version, saveVersionInfo)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print 'Rebuild Complete'
    

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

    # Name: RSysIdxDb2.py
    # Description: Rebuilds indexes on the states, state_lineages,
    # and mv_tables_modified tables in an enterprise geodatabase
    # in DB2.
    
    # Author: Esri
    
    # Import system modules
    import sys
    import arcpy
    import os
    
    # Provide connection information
    database_platform = DB2
    instance = odbc_dsn
    account_authentication = OPERATING_SYSTEM_AUTH | DATABASE_AUTH
    #Leave username and password blank if using OPERATING_SYSTEM_AUTH
    username = gdb_admin_user_name
    password = gdb_admin_password
    version = sde.DEFAULT
    
    
    # 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
    saveVersionInfo = "SAVE_VERSION" #DO_NOT_SAVE_VERSION
    
    print "Creating database connection file..."
    # Usage: out_folder_path, out_name, database_platform, instance, account_authentication, username, password, saveUserInfo, version, saveVersionInfo
    arcpy.CreateDatabaseConnection_management(temp, "connection.sde", database_platform, instance, account_authentication, username, password, saveUserInfo, version, saveVersionInfo)
    
    # Rebuild indexes on system tables
    arcpy.RebuildIndexes_management(Connection_File_Name, "SYSTEM", "", "ALL")
    print 'Rebuild Complete'
    
  2. После занесения в скрипт информации о подключении, запланируйте запуск скрипта в определенный час в ночное время.
    • В Windows откройте утилиту Назначенные задания из Панели управления и используйте мастер для добавления запланированного задания. На запрос указать программу, которую нужно запускать, укажите свой скрипт Python.
    • В Linux создайте текстовый файл cron, в котором указывается день и время, в которые необходимо запускать скрипт и загрузите файл в cron с помощью программы crontab.

      Например, для запуска скрипта Python (с именем rsysidxdb2.py) каждую среду в 22:00 необходимо ввести следующую информацию.:

      0 22 * * 3 /usr/bin/rsysidxdb2.py

      Для получения сведений по использованию cron, см. справочные страницы Linux, поставляемые вместе с операционной системой.

ArcGIS Desktop

  • На главную
  • Документация
  • Поддержка

ArcGIS Platform

  • ArcGIS Online
  • ArcGIS Desktop
  • ArcGIS Enterprise
  • ArcGIS for Developers
  • ArcGIS Solutions
  • ArcGIS Marketplace

Об Esri

  • О нас
  • Карьера
  • Блог Esri
  • Конференция пользователей
  • Саммит разработчиков
Esri
Расскажите нам, что вы думаете.
Copyright © 2019 Esri. | Конфиденциальность | Правовая информация