Skip to main content
Question

Drop and Rebuild Indexes when writing to ESRI Geodatabase


sunsilk11
Contributor
Forum|alt.badge.img+6

Hi I am writing millions of line features to an various feature classes in an ESRI SDE Geodatabase 10.0. Are there any best practices for improving the performance in writing.

I am writing to a non versioned db, which is being used constantly.

I have increased the transaction to 10000. And Set Transaction type to null.

Is there a way to set the writer in load-only mode for the GEODATABASE_SDE?

3 replies

virtualcitymatt
Celebrity
Forum|alt.badge.img+38

Here's some info on that:

https://community.safe.com/s/article/writers-and-performance

and also:

https://community.safe.com/s/article/improving-performance-when-working-with-esri-geoda

 

You asked about dropping and rebuilding the index? That would definitely help, but unfortunalty there is no easy way to do this in FME without a bit of python. https://pro.arcgis.com/en/pro-app/tool-reference/data-management/remove-spatial-index.htm and https://pro.arcgis.com/en/pro-app/tool-reference/data-management/add-spatial-index.htm

 

Someone might have a sample to share with you.

 

The other thing to check it permissions, I have heard that if permissions are not high enough for SED FME might try and start and edit session which is much slower. Check that you have proper permissions.

 


bwn
Evangelist
Forum|alt.badge.img+26
  • Evangelist
  • August 11, 2020

If it is non-versioned it becomes relatively straightforward to instead Write using the native DB Client, like the SQL Server Spatial Writer (depending on Spatial Data Type being used in the backend). Similarly dropping and re-building the indices can be executed with the relevant SQL commands like DROP INDEX, CREATE INDEX etc. but that involves compromises if you are executing that in a live production environment and is DB dependent.

 

An alternative way I've found faster for insertions and updates is to send the features in via ArcPy da (Data Access) InsertCursors or UpdateCursors respectively. They are a pain to code up in Python, but it tends to outperform the SDE interface (and related FME Writers) by several orders of magnitude.

 


virtualcitymatt
Celebrity
Forum|alt.badge.img+38
bwn wrote:

If it is non-versioned it becomes relatively straightforward to instead Write using the native DB Client, like the SQL Server Spatial Writer (depending on Spatial Data Type being used in the backend). Similarly dropping and re-building the indices can be executed with the relevant SQL commands like DROP INDEX, CREATE INDEX etc. but that involves compromises if you are executing that in a live production environment and is DB dependent.

 

An alternative way I've found faster for insertions and updates is to send the features in via ArcPy da (Data Access) InsertCursors or UpdateCursors respectively. They are a pain to code up in Python, but it tends to outperform the SDE interface (and related FME Writers) by several orders of magnitude.

 

This is really interesting - thanks for sharing.


Cookie policy

We use cookies to enhance and personalize your experience. If you accept you agree to our full cookie policy. Learn more about our cookies.

 
Cookie settings