27
Tips and Tricks for Optimizing Performance with SAP Sybase IQ Mark Mumy IQ Technology Specialist SAP [email protected]

Tips and Tricks for SAP Sybase IQ

Embed Size (px)

DESCRIPTION

 

Citation preview

Page 1: Tips and Tricks for SAP  Sybase IQ

Tips and Tricks for Optimizing Performance with SAP Sybase IQ

Mark Mumy IQ Technology Specialist SAP [email protected]

Page 2: Tips and Tricks for SAP  Sybase IQ

2 – November 8, 2012

Disclaimer

In this session we will be giving tips and guidelines for IQ to provide novices and experienced DBAs with information they may not know

This is by no means exhaustive. We strongly suggest taking advantage of the education course offerings available to enhance your in-depth knowledge of IQ

Page 3: Tips and Tricks for SAP  Sybase IQ

3 – November 8, 2012

Agenda

• Sizing

• Configuration

• Indexes

• Monitoring

Page 4: Tips and Tricks for SAP  Sybase IQ

4 – November 8, 2012

Sizing

Page 5: Tips and Tricks for SAP  Sybase IQ

5 – November 8, 2012

Memory Summary

Operating System .5 to 1 GB RAM

Filesystem Cache 20% of RAM

All Other Applications

IQ Catalog Memory -c/-cl/-ch parameters

IQ Thread Memory stack size * thread count

Load Memory (pre 15.2) per concurrent load

Bitmap Memory per concurrent load

IQ Main Cache 40% of remaining RAM

IQ Temporary Cache 60% of remaining RAM

Backup Memory per backup instance

Monitor the “IQ Dynamic Memory” in sp_iqstatus

Lists the current, and maximum RAM that IQ has allocated for all memory structures

Swap recommendation is still 1x virtual memory

Some customers run with 4-8 GB

I prefer to run with 25-100 GB depending on total RAM

May seem excessive, but it can help avoid the dreaded “all available virtual memory exhausted” error!

Page 6: Tips and Tricks for SAP  Sybase IQ

6 – November 8, 2012

Quick Sizing Reference

• RAM: 4-8 GB per core (prefer 8, settle for 4)

• RAM: Give IQ 75% of available RAM (assumes there are no other major consumers of RAM on the host)

• Storage: Prefer RAID 10 for write intensive systems and temp store

• IQ can drive 50-500 MB/sec on and off disk per core in the multiplex so size disks accordingly, but ground the sizing in reality and service levels

• MAIN Store disk: 2-5 drives per core on the host or in the entire multiplex

• TEMP Store disk: 2-5 drives per core on the host

• The number of drives does NOT include any overhead needed by RAID

• MAIN Store Fiber Controllers/HBAs: 1 per 5-10 cores

• TEMP Store Fiber Controllers/HBAs: 1 per 5-10 cores

Page 7: Tips and Tricks for SAP  Sybase IQ

7 – November 8, 2012

Sizing CPUs for Load

• For systems with 4 or fewer CPUs, expect to load roughly 10-20 GB of data per hour per CPU

A 4 CPU system should be able to load about 40 GB of raw data per hour

• For systems with 8 or more CPUs, expect a load rate of 20-50 GB per hour per CPU

An 8 CPU system should be able to load between 160 and 400 GB of raw data per hour

• Load times with this approach will vary greatly based on CPU count / speed and the number and types of indexes on the table being loaded

• For each BLOB or CLOB being loaded into IQ a single CPU will be necessary for maximum performance

• IQ 16 will change these ratios as we move to a 100% parallel load engine

Page 8: Tips and Tricks for SAP  Sybase IQ

8 – November 8, 2012

Sizing CPUs for Queries

• On average, 1-2 CPU per active query – more if queries are complex and can be run in parallel

• As IQ matures, we constantly push the engine to run more queries fully parallel

This changes the sizing from how many cores per query to what is the service level we need to achieve and how many cores will that take

• Most queries are now run in parallel and can consume all CPU resources on the host

• IQ will blend single and multi-user query performance and rebalance resources as the workload changes As more queries appear on the run queue, the available resources will

change and IQ will adjust accordingly

Page 9: Tips and Tricks for SAP  Sybase IQ

9 – November 8, 2012

Sizing Memory

• Total system RAM should be based on 4-8 GB RAM per core

Threads do not matter

Allocate no more than 75% of total RAM to the main and temp caches

Shared memory is not used by Sybase IQ except in small amounts for client/server communication where both are on the same host

• Typically, we want more temp cache for loading as the HG indexes are built in temp cache

• For queries the mix of main to temp will vary depending on a few factors:

If there are temp tables, we want more temp cache

If the queries contain a lot of ordering and grouping, this will use work tables based in temp cache

Typically, we weigh main and temp cache at 50/50 or 40/60 split

Page 10: Tips and Tricks for SAP  Sybase IQ

10 – November 8, 2012

Configuration

Page 11: Tips and Tricks for SAP  Sybase IQ

11 – November 8, 2012

Creation Options

• Uppercase and lowercase?

Can force IQ to treat all text data as CASE IGNORE or CASE RESPECT

CASE RESPECT has slightly better performance but puts a burden on applications to compare data with the appropriate case

• Page size

Default is 128k which is acceptable for most sites

Increase the page size as the database and table sizes (rowcounts) increase

Increasing the page size should be accompanied by an increase in RAM

• Collation and sort orders

Can only be set at database creation

If it needs to be changed the database must be rebuilt

Page 12: Tips and Tricks for SAP  Sybase IQ

12 – November 8, 2012

Runtime Options (config file)

• -iqnumbercpus

Should be set to match the physical core count, not the total processing threads that are on the host

Caveat is IBM p-series where this can be tested and adjusted to a value between physical cores and total SMT threads

• -gm

Total number of users that can connect

Keep this setting low as memory is carved based on this value. This can impact query performance.

• -gn

Should be set to 1.5x the –gm setting (default is –gm + 5)

Page 13: Tips and Tricks for SAP  Sybase IQ

13 – November 8, 2012

Database Options (set options)

• FORCE_NO_SCROLL_CURSORS

Should always be set to ON

Very few applications require this to be OFF

Can improve query performance

• Append_Load

Can be used to improve load performance

Will not reuse Row ID’s or the space occupied by those Row ID’s

Great for systems where large, contiguous chunks of data are deleted

Page 14: Tips and Tricks for SAP  Sybase IQ

14 – November 8, 2012

Indexes

Page 15: Tips and Tricks for SAP  Sybase IQ

15 – November 8, 2012

Key Characteristics • Most columns will have at least one index • Index selection decisions based on column

cardinality (number of unique values) • Multiple indexes used to resolve a query

• Indexes are self maintaining

• No optimizer statistics to update

• Indexes are compressed

• Index advisor demystifies index selection

TYPE USAGE

Fast Projection Compressed raw data for result sets (Default)

Low Fast Low cardinality data (up to 1000 unique values)

High Non-Group Aggregation on the fly and range searches

High Group Key fields and groupings for cross-tabular

Date, Time, DT Date ranges, date part operations

Multi-Column Concatenated indexes

Word, Text Sophisticated key word or phrase string searches with boolean, ranking, proximity, fuzzy features

Compare Column comparisons

SAP Sybase IQ Index Types

Page 16: Tips and Tricks for SAP  Sybase IQ

16 – November 8, 2012

Should We Index?

• Is the column searchable?

• Is the column a join column?

• Is the column a date/time/datetime datatype?

• Will the column be part of an aggregation?

• Will the column be part of a group by?

Page 17: Tips and Tricks for SAP  Sybase IQ

17 – November 8, 2012

When To Use Indexes

TYPE When to use it

Fast Projection This is the default storage for a column. You can only influence the type of Fast Project via the IQ UNIQUE() syntax or Minimize_Storage option

High Group Low cardinality data (over 2000 unique values) where the columns are used in a WHERE clause for searching or joins. Also include columned used in a GROUP BY.

Low Fast Low cardinality data (up to 2000 unique values) where the columns are used in a WHERE clause for searching or joins

High Non-Group Not used that much as the functionality has been implemented in other indexes (date, hg, lf)

Date, Time, DTTM All date fields should have these indexes

Word, Text Use only if you will be using the word or text search capabilities in IQ

Compare Use when comparing 2 columns in the same table.

Multi-Column Usually used for primary keys and for columns in a GROUP BY. Make sure that every column has an LF or HG as well!

Page 18: Tips and Tricks for SAP  Sybase IQ

18 – November 8, 2012

Monitoring

Page 19: Tips and Tricks for SAP  Sybase IQ

19 – November 8, 2012

Monitoring

• Hardware and storage utilities

iostat, vmstat, top, glance, gpm, sar, etc.

Use tools to monitor the hardware and storage for any potential bottlenecks outside of IQ

• IQ utilities

sp_iqsysmon

Sybase Control Center

3rd party tools like Bradmark Surveillance DBA and White Sands ProActive DBA

Page 20: Tips and Tricks for SAP  Sybase IQ

20 – November 8, 2012

Monitoring via sp_iqsysmon

• sp_iqsysmon is a great tool to consolidate the individual monitoring!!

• SAP Sybase IQ Monitor offers a series of “views” of the counters to showing differing aspects of the server and buffer cache workload

• A consolidated interface for the iq utilities command that is much easier to use and provides a way to run multiple reports with a single command

Page 21: Tips and Tricks for SAP  Sybase IQ

21 – November 8, 2012

Monitoring via Sybase Control Center

• Sybase Control Center

Sybase Central is being deprecated in version 16

Is a separate download via the product download center

Leverages a lightweight client (browser) with a server component so that users need not install software

• Graphical interface that presents the data in a way that highlights issues visually

• Most counters that are in sp_iqsysmon are available in Sybase Control Center

Page 22: Tips and Tricks for SAP  Sybase IQ

22 – November 8, 2012

Monitoring Guidance

• Use sp_iqsysmon or Sybase Control Center when issues arise and active monitoring is needed

• Frequency and key items

Run at 10-15 second intervals for the duration of the issue (sp_iqsysmon), or actively via Sybase Control Center

Thread use/starvation

Cache usage

Cache hit rates

Dirty page grabs

Page rereads

Physical and logical i/os

Page 23: Tips and Tricks for SAP  Sybase IQ

23 – November 8, 2012

Query Monitoring

• Leverage HTML query plans!

• Query plan settings (off by default) to provide optimal query information to DBA’s and engineering set temporary option query_plan='off';

set temporary option query_plan_as_html='on';

set temporary option query_plan_as_html_directory=‘qplans';

set temporary option query_plan_after_run='on';

set temporary option query_timing='on';

set temporary option query_detail='on';

set temporary option DML_options10='on';

set temporary option Query_Name = ‘Query Name‘

• Should not be set globally as the Sybase IQ MSG file or query plan directory will grow rapidly

• No need to set both Query_Plan and Query_Plan_As_HTML

Query_Plan is on by default, but should be turned off immediately to keep the IQ message file output to a minimum

This is much more difficult to read than the HTML plans and is note widely used

Page 24: Tips and Tricks for SAP  Sybase IQ

24 – November 8, 2012

Index Monitoring

• Index advice and monitoring is off by default

• Turn on the index advisor globally and keep 1000 rows of advice set option public.index_advisor='on';

set option public.index_advisor_max_rows=1000;

• Will output data to HTML and text based query plans, if on

• Will output advice to an in-memory structure that can be accessed via sp_iqindexadvice()

• Captures the advised index type, where it was used, the last time the advice was generated, and the number of times this piece of advice was made

• The advisor will recommend any index that will cost less

This could be 1 ms or 1 i/o less

Be smart about the advice and whether or not you want to implement it

Page 25: Tips and Tricks for SAP  Sybase IQ

25 – November 8, 2012

Troubleshooting Advice

• Determine where the issue is

External to IQ Monitor the OS, hardware, and storage for any bottlenecks or issues Look for high CPU use, high CPU system time, low CPU user time, high wait time Look for I/O service times that are more than 10 ms

Internal to IQ Enable the index advisor and look for missing indexes (this is usually the culprit) Enable HTML query plans and the index advisor if the issue is with a single query If the overall health is in question, leverage sp_iqsysmon at 30-60 intervals for a

few days Sysmon output can then be parsed looking for the key items previously discussed

Page 26: Tips and Tricks for SAP  Sybase IQ

26 – November 8, 2012