Hi all,

LJ, ARS absolutely WILL generate nvarchar strings (using the N prefix) on
unicode servers, though I have no idea if this particular SQL is being
generated by ARS or not.

On my 8.1 dev box, Application Pending form has no defined indexes, so
there's only the clustered index on the request id.  This query doesn't hit
the request id, so it's going to result in a full table scan which is as
costly as it can get: each one of those queries will cause the DB to scan
through every record in the table.  If there are more than a few thousand
records, I can see how it could start to use up the hours and CPU Jennifer
has described.  It's also going to severely impact all other usage of the
DB.

Although I know this form has been around for a while, I have no idea what
it's for beyond the description in help text on the form itself.  I don't
work with ITSM (I've always done purely custom apps), but would guess it's
involved with integrating ITSM with ancillary applications.

However, the 'Status' field values suggest a lifecycle for entries that
would cause an accumulation of entries over time.  This is bad, since there
doesn't seem to be any provision to delete old data (there's no Audit
configuration to do this on the form).  If ITSM (or whatever) is using this
form frequently and creating many entries, then you're going to start
having problems with any queries against this form pretty quickly.

Jennifer, there are a number of things you can do.

1) Determine the source of that query if you can.  It seems unlikely to me
that it's being generated by any native ARS mechanism.  I would guess that
the queries generated by any native ARS mechanism (which would be looking
to run a pending application, whatever that might be) would look more like
WHERE C7 = 0 ('Status' = "Pending").

If the query is important for the business, at a minimum create an index on
either of the 'Category' or 'Command' fields (it's hard to know which might
be better individually without seeing the data), or possibly even both (a
single index on both, not two indexes).  This will likely very
significantly improve the performance of those queries (from hours to
seconds).

2) Determine if the historic data is useful.  That it is being queried
would suggest it is, but determine the business significance if any.  If
there is none, configure the audit mechanism to delete obsolete data using
a qualification of, say, 'Status' >= "Deleted" AND 'Last Changed Time' >
$DATE$ + (30 * 86400) [meaning, the entry was marked as Deleted or
Cancelled more than 30 days ago].  PLEASE, someone who has more experience
with this form chime in here - I have no idea if the lifecycle of entries
can evolve after they're marked Deleted or Cancelled, but am assuming not.

3) If you do instead decide to keep the historic data, you might also then
want to put an index on the Status field.  Again, my guess is that whatever
mechanism is responsible for executing the "pending application" entries in
this form identifies them using a query that includes 'Status' = "Pending".
 Since there's no index on the 'Status' field, this will force a full table
scan.

If you do this, be sure that your DBA's are maintaining the statistics on
the indexes (which they should be doing anyway), since this one could get
very stale and cause bad DB optimizations.

Anyway, I hope something here helps.

Thanks,
Charlie


On Wed, Jan 22, 2014 at 6:07 AM, LJ LongWing <lj.longw...@gmail.com> wrote:

> **
> Brian,
> If you look into docs, the N being outside of the ' indicates that the
> string is going to be an nvarchar....one thing this indicates to me is that
> the query is NOT Remedy generated, but maybe a direct sql statement or
> something....but I'm not 100% sure.
>
>
> On Wed, Jan 22, 2014 at 6:48 AM, Brian Goralczyk <
> bgoralczyk.w...@gmail.com> wrote:
>
>> **
>> My first question is, Which system is having the cpu hit 100%?  If it is
>> the db then indexes should help.  If it is the application server then you
>> have either too much data being sent back or too much workflow firing on
>> all the records.
>>
>> I would first check to see how many records you have in the table.
>>  Second I would look into the query.  What is calling it, and why does it
>> have C8 = N'BR-CHK-CONFIG' as part of the qualification.  I am concerned
>> initially about the N being outside the quotes.
>>
>> I would also run the query against the db directly and see how long that
>> takes and how many rows it is returning.
>>
>> HTH,
>>
>> Brian Goralczyk
>>
>>
>> On Wed, Jan 22, 2014 at 4:03 AM, Carl Wilson <carlbwil...@gmail.com>wrote:
>>
>>> **
>>>
>>> Hi,
>>>
>>> I would verify the indexes that are present on Application Pending form
>>> to ensure that the field 'C501' has an index.
>>>
>>> Also, you may want to check the number of records in this form and
>>> delete entries that are not required (by default, processed records should
>>> be removed).
>>>
>>>
>>> ------------------------------
>>>
>>>
>>>
>>> Kind Regards,
>>>
>>>
>>>
>>> *Carl Wilson*
>>>
>>>
>>>
>>> http://www.missingpiecessoftware.com/
>>>
>>>
>>>
>>> *From:* Action Request System discussion list(ARSList) [mailto:
>>> arslist@ARSLIST.ORG] *On Behalf Of *Jennifer Varkey
>>> *Sent:* 22 January 2014 06:59
>>> *To:* arslist@ARSLIST.ORG
>>> *Subject:* Re: CPU utilization sometimes goes upto 100%
>>>
>>>
>>>
>>> **
>>>
>>> sorry, i missed the server details;
>>>
>>> ARS/ITSM/RKM 7.5 on Windows 2k8
>>>
>>> RAM is 12 GB.
>>>
>>>
>>>
>>> The databse is SQL 2k8 on another separate machine, having 12 GB RAM.
>>>
>>>
>>>
>>> On Wednesday, 22 January 2014, 12:24, Jennifer Varkey <
>>> sonia_m...@yahoo.co.uk> wrote:
>>>
>>>
>>>
>>> Hello All,
>>>
>>>
>>>
>>> In my SQL logging each of the following statements are taking over 4
>>> hours;
>>>
>>>
>>> SELECT T8.C1 FROM T8 WHERE ((T8.C8 = N'BR-CHK-CONFIG') AND (T8.C501 =
>>> N'SG-Check-Config')) ORDER BY C1 ASC
>>> SELECT T8.C1 FROM T8 WHERE ((T8.C8 = N'BR-CHK-CONFIG') AND (T8.C501 =
>>> N'SG-Check-Config')) ORDER BY C1 ASC
>>> SELECT T8.C1 FROM T8 WHERE ((T8.C8 = N'BR-CHK-CONFIG') AND (T8.C501 =
>>> N'SG-Check-Config')) ORDER BY C1 ASC
>>> SELECT T8.C1 FROM T8 WHERE ((T8.C8 = N'BR-CHK-CONFIG') AND (T8.C501 =
>>> N'SG-Check-Config')) ORDER BY C1 ASC
>>>
>>> During such time, the CPU utilization becomes very high, almost reaching
>>> 100%.
>>>
>>>
>>>
>>> The T8 table is "Application Pending".
>>>
>>>
>>>
>>> The co-rresponding API logging (against the form "Application Pending")
>>> does not show the same delay or lag. We ran the log files using the
>>> arloganalyzer.
>>>
>>>
>>>
>>> The field T8.C8 is "Category" field and the field T8.C501 is "Command"
>>> field.
>>>
>>>
>>>
>>> The category "BR-CHK-CONFIG" refers to BRIE (SLM).
>>>
>>>
>>>
>>> Could someone please help us out on why these are taking so much time
>>> and why the CPU is going so high?
>>>
>>>
>>>
>>> Thanks and Regards,
>>>
>>> Sonia.
>>>
>>>
>>>
>>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>>  _ARSlist: "Where the Answers Are" and have been for 20 years_
>>>
>>
>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>>
>
> _ARSlist: "Where the Answers Are" and have been for 20 years_
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
"Where the Answers Are, and have been for 20 years"

Reply via email to