Select to view content in your preferred language

Poor Performance - 10.5 SQL Server 2012R2

1395
1
Jump to solution
01-24-2017 11:22 AM
GreggRoemhildt1
Deactivated User

I'm sure this has been asked before, but I couldn't find anything relevant to 10.5 yet... We just updated ArcGIS Server/ArcMap and I have ran the upgrade geodatabase tool to get the schema up to date with 10.5.

I'm experiencing really poor performance with running some data updates. I'm trying to do a field calculation on a field, the field calculation is simply the name of another text field, on about 3000 records, so it should run fairly quickly I would think. However, as soon as I start the field calculation, I see on the serer, the CPU spikes to about 50% and the calculation takes about 2 minutes to complete, ArcMap hangs during this time. 

The data is "versioned" so I need to start an editing session in order to start editing. 

Anyone have any suggestions on troubleshooting this?

I have done some basic monitoring in sql server management studio, and here are some of the bigger queries I've found being ran. It seems a few of them are getting run A LOT. 

Right after starting the field calculation:

select  OBJECTID,  CID,  SUBDIV,  PLAN_LENGTH,  BUILD_YEAR,  DIAMETER,  FROM_IE,  TO_IE,  PLAN_ID,  PLAN_PAGE,  PIPE_TYPE,  ALT_PLAN_ID,  
SAN_ZONE,  ENABLED,  SOURCE_ACC,  SOURCE_DES,  PROJ_NAME,  MAINT_NUM,  MAINT_NAME,  ROOT_MAINT,  MAINT_CAT,  MATERIAL,  
OWNER,  NOTES,  FROM_ID,  TO_ID,  SHAPE,  GLOBALID,  Shape.STLength(),  OLD_PLAN_ID,  GIS.DBO.SDE_GEOMETRY11.CAD  
from (

SELECT /* ArcSDE NORMAL_FILTER */ b.OBJECTID,b.cid,b.subdiv,b.plan_length,b.build_year,b.diameter,b.from_ie,b.to_ie,b.plan_id,b.plan_page,b.pipe_type,
b.alt_plan_id,b.san_zone,b.Enabled,b.source_acc,b.source_des,b.proj_name,b.maint_num,b.maint_name,b.root_maint,b.maint_cat,b.material,b.owner,b.notes,
b.from_id,b.to_id,b.Shape,b.GlobalID,b.old_plan_id ,0 SDE_STATE_ID 
FROM  gis.DBO.san_pipe b  
LEFT JOIN ( 

SELECT SDE_DELETES_ROW_ID,SDE_STATE_ID 
FROM GIS.DBO.d16 
WHERE SDE_STATE_ID = 0 AND DELETED_AT IN (

SELECT l.lineage_id 
FROM gis.dbo.SDE_state_lineages l 
WHERE l.lineage_name = @P1 AND  l.lineage_id <= @P2) ) d 
ON b.OBJECTID = d.SDE_DELETES_ROW_ID 
WHERE d.SDE_STATE_ID IS NULL 
UNION ALL 

SELECT a.OBJECTID,a.cid,a.subdiv,a.plan_length,a.build_year,a.diameter,a.from_ie,a.to_ie,a.plan_id,a.plan_page,a.pipe_type,a.alt_plan_id,a.san_zone,
a.Enabled,a.source_acc,a.source_des,a.proj_name,a.maint_num,a.maint_name,a.root_maint,a.maint_cat,a.material,a.owner,a.notes,a.from_id,a.to_id,
a.Shape,a.GlobalID,a.old_plan_id ,a.SDE_STATE_ID 
FROM  GIS.DBO.a16 a  
LEFT JOIN ( 

SELECT SDE_DELETES_ROW_ID,SDE_STATE_ID 
FROM GIS.DBO.d16 
WHERE SDE_STATE_ID > 0 AND DELETED_AT IN (
SELECT l.lineage_id 
FROM gis.dbo.SDE_state_lineages l 
WHERE l.lineage_name = @P3 AND  l.lineage_id <= @P4) ) d 
ON (a.OBJECTID = d.SDE_DELETES_ROW_ID) AND (a.SDE_STATE_ID = d.SDE_STATE_ID) 
WHERE a.SDE_STATE_ID IN (

SELECT l.lineage_id 
FROM gis.dbo.SDE_state_lineages l 
WHERE l.lineage_name = @P5 AND  l.lineage_id <= @P6) AND d.SDE_STATE_ID IS NULL ) V__16 
LEFT JOIN GIS.DBO.SDE_GEOMETRY11 
ON GIS.DBO.SDE_GEOMETRY11.GEOMETRY_ID = V__16.OBJECTID AND GIS.DBO.SDE_GEOMETRY11.SDE_STATE_ID = V__16.SDE_STATE_ID  
where (to_id  = 335)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍

Right after doing the field calculate and then clicking "Save": 

select  V__8.*  from (SELECT /* ArcSDE NORMAL_FILTER */ 
b.OBJECTID,b.cid,b.plan_page_num,b.Enabled,b.build_year,b.rem_year,
b.inv_elev,b.num_inv,b.gps_date,b.source_acc,b.source_des,b.fl_elev,b.top_elev,
b.category,b.owner,b.material,b.notes,b.storm_zone,b.has_grate,b.created,b.modified,
b.Shape,b.GlobalID,b.AncillaryRole,b.est_horiz_acc,b.est_vert_acc,b.gps_top_elev,
b.old_plan_id,b.plan_id FROM  gis.DBO.storm_struc b  LEFT JOIN ( 

SELECT SDE_DELETES_ROW_ID,SDE_STATE_ID 
FROM GIS.DBO.d8 
WHERE SDE_STATE_ID = 0 AND DELETED_AT IN (

SELECT l.lineage_id 
FROM gis.dbo.SDE_state_lineages l 
WHERE l.lineage_name = @P1 AND  l.lineage_id <= @P2
) 
) d 
ON b.OBJECTID = d.SDE_DELETES_ROW_ID 
WHERE d.SDE_STATE_ID IS NULL 
UNION ALL 
SELECT a.OBJECTID,a.cid,a.plan_page_num,a.Enabled,a.build_year,a.rem_year,a.inv_elev,a.num_inv,a.gps_date,a.source_acc,a.source_des,
a.fl_elev,a.top_elev,a.category,a.owner,a.material,a.notes,a.storm_zone,a.has_grate,a.created,a.modified,a.Shape,a.GlobalID,a.AncillaryRole,
a.est_horiz_acc,a.est_vert_acc,a.gps_top_elev,a.old_plan_id,a.plan_id 
FROM  GIS.DBO.a8 a  

LEFT JOIN ( 
SELECT SDE_DELETES_ROW_ID,SDE_STATE_ID 
FROM GIS.DBO.d8 
WHERE SDE_STATE_ID > 0 AND DELETED_AT IN 
(

SELECT l.lineage_id 
FROM gis.dbo.SDE_state_lineages l 
WHERE l.lineage_name = @P3 AND  l.lineage_id <= @P4) ) d 
ON (a.OBJECTID = d.SDE_DELETES_ROW_ID) AND (a.SDE_STATE_ID = d.SDE_STATE_ID) 
WHERE a.SDE_STATE_ID IN 
(SELECT l.lineage_id 
FROM gis.dbo.SDE_state_lineages l 
WHERE l.lineage_name = @P5 AND  l.lineage_id <= @P6) AND d.SDE_STATE_ID IS NULL ) V__8  
where (cid  = 2983)‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍‍
1 Solution

Accepted Solutions
GreggRoemhildt1
Deactivated User

The issue I had was related to the text field size. Some of the tables were brought over from Access tables and had the field type "text" which equates to a very large text length in the arcgis equivalent. I created a new field with a shorter length (500 characters) and field calculated the data over to solve the problem.

View solution in original post

1 Reply
GreggRoemhildt1
Deactivated User

The issue I had was related to the text field size. Some of the tables were brought over from Access tables and had the field type "text" which equates to a very large text length in the arcgis equivalent. I created a new field with a shorter length (500 characters) and field calculated the data over to solve the problem.