Adaptive Server IQ 12.5 Performance Cheat Sheet
Adaptive Server IQ 12.5 Performance Cheat Sheet
1. Hardware Install latest patches for OS -iqmc main cache size (start with 40% of
Install ASIQ whats available for IQ)
Make it Dedicated. IQ and RDBMS’s, ETL Install latest EBF (base releases of IQ can be a -iqtc temp cache size (start with 60% of
tools, Cube Builders, etc. should not be on the little buggy) whats available for IQ)
same box if you can help it ! NB: Above figures assume an even
Set aside 500mb min (more if you wish to keep 3. Databases mix of queries. For environments
many logs, ebfs, etc on disk) for IQ software where lots of sort-merge joins or large
Staging area - if loading from flat files (which is Sizing – As a start, assume 70% Raw data size number of HG index inserts are being
the fastest way to load) make sure they are not for IQ Main Store & 30% for IQ Temp Store done, then a 30/70 split May be more
on the same disk/s as the DB files. (this is a very rough figure based on 75% Gut appropriate. Where there is an
Swap – twice physical memory feel and 25% experience with small to medium extremely low number of these sorts of
Memory – Recommend 1gb for anything more DB’s – 10-12-gb, but it’s a start) operations a 50/50 split may be more
than a development system (even for a proof of Raw devices are a bit faster (but are a little appropriate.
concept). Rough rule of thumb is 2 GB per harder to manage) – Needed for Multiplex, so if -cl Minimum cache size for catalog store
CPU - Get whatever you can afford, and then you don’t use them you may have to rebuild (32mb recommended)
more! you DB from scratch down the line (and -gp catalog store page size (should be
CPU – Fast CPU’s make a big difference – rebuilding a multi-terabyte database is not same as when db create, usually 4096)
Higher clock speeds are important (P4 3ghz+, trivial). -gm number of concurrent users (default
Itanium) and lots of them ! IQ is more CPU IQ Page Size – Min 128k on 64bit platforms 10)
than I/O intensive even for loading ! Ideally 1 (which you should be using if you can !). -gc checkpoint interval (default 60,
CPU per active query. Probably the best in most cases unless you recommended 6000)
-gr max recovery time (default 2,
OS – If you aren’t committed to one, consider have tonnes of memory (as the larger the page
size the fewer pages fit in memory). recommended 6000)
Linux (gives you S/W benefits of Unix, with
-ti default client timeout (default 240,
Hardware benefits of Intel CPU’s). If possible, create the database as CASE
recommended 4440 which is ~72 hours)
64bit OS & Processor is preferred. RESPECT. It is more efficient.
-tl default network timeout (default 120,
Multiple controllers and disks recommended. recommended 300+)
Minimum 3 disks should be used for IQ (1 for 4. Configuration
-x tcpip{port=xxxx} (if you don’t do this,
OS, SW & logs, 1 for Main store & 1 for temp other protocols are started such as ipx
store). If it can be set in a config file, it should be
which you don’t need)
set in a config file !
Some DB options you may want to set:
Set option Force_No_Scroll_Cursors='On';
2. Software What to set:
Set option.Query_Temp_Space_Limit = 0;
-n ServerName
Compiled by Leigh Kennedy Page 1 of 3
Thanks to Lou Stanton, Mark Mumy, Nick Ward & Sybase Education
Adaptive Server IQ 12.5 Performance Cheat Sheet
set option public.Minimize_storage='On'; key/join columns. Can be multi column Try to create indexes so that inserts will be
(see indexing section) index placed at the end of the index.
sp_iqcheckoptions – shows values High Non Group (HNG) indexes are used Indexes can be create in parallel ie:
changed from the default. for range and aggregation queries (except Begin Parallel IQ
SET OPTION on dates). Create LF index …;
PUBLIC.LOAD_MEMORY_MB = x; (where Compare (CMP) indexes are used for Create HG index …;
x is the max memory to use for loading. comparisions between two columns in the ...
Default is 0, or unlimited.) NB: Remember same table (columns must be same End Parallel IQ;
this memory is separate to what is datatype inc. precision & scale). It is recommended to create 1 index for
specified in iqmc and iqtc. Word (WD) indexes index textual data each CPU.
separated by spaces, punctuation, etc. As you may have seen on the training
very useful for like and contains queries. course we can follow the rules show in the
NB: Restricted to indexing ‘words’ up to 3 indexing chart (see next page).
5. Indexing bytes.
Date, Time and DataTime (DTTM) indexes
Always create indexes before loading data are used for range and datepart queries on 6. Unions & Views
– it is much quicker than creating the date and time data
indexes after loading. Join indexes can be created where two Views on physically partitioned tables (ie
Fast projection (FP) indexes are created tables are frequently joined together (only union views) can perform significantly
on all columns. You can use IQ Unique to create them if you need them, IQ is still v. better than on a single large base table.
specify the cardinalty (lots of work) or… fast without them). They need a significant Loading can also be quicker as you can
Turnng the option Minimize_storage on will amount of disk space and need refreshing load into a new table and add it to the view.
give you maximum compression on disk after data loads, so may not be worth the
and best query performance. Warning – trouble. 7. Loading Data
This will slow down the loading of very Be careful about the use of Unique,
wide tables (1000+ columns) so turn if off primary key, etc. keywords when creating Ways to load data (From fastest to
to load these. tables. They will create indexes, which you slowest):
Low fast (LF) indexes should be used may or may not want. Having said that, o Load table command (parallel)
where cardinality is <1500. Its used by PRIMARY KEY indexes do the same as o Load table command (sequential)
Sarg searches, Min, Max & Group by Unique HG, but are more useful to the o Insert from Location
operations. optimizer and FOREIGN KEY indexes to o Insert Values
High Group (HG) indexes should be used the same as non-unique HG but are also Where using load table specify multiple
where cardinality is 1500+ and on all more useful to the optimizer. files with one load table command rather
Compiled by Leigh Kennedy Page 2 of 3
Thanks to Lou Stanton, Mark Mumy, Nick Ward & Sybase Education
Adaptive Server IQ 12.5 Performance Cheat Sheet
than multiple load table commands for ANSI joins are faster (and less ambiguous)
each file. Avoid using the default port (2638) as this than TSQL joins.
To run load table in parallel, you need to will be used by all ASA based applications Use multiplex – It is v. easy to set up and
specify the ROW DELIMITED BY and (ASA, ASIQ, RS12.6, IO4.0, etc) as a manage and will allow you to scale to
DELIMITED BY options. broadcast listener. thousands of users.
If possible use binary mode of load table If returning large amounts of data to the What sort of network are your servers
(can be 3-10 times faster). client (as is often the case with BI tools), running on ? Install Gigabit Ethernet for all
Some settings that may improve load set a larger network packet size using –p in server to server communication (especially
performance: the config file. important for insert from location).
- DISABLE_RI_CHECK (RI checks can Char is more efficient than varchar – avoid Consider multiple interfaces, one for clients
cause up 5% of load time) varchar if not needed. and one for servers
- Avoid storing what you don’t need ie: don’t
MAX_IQ_THREADS_PER_CONNECTION use datetime if you only need date or
- SORT_PHASE1_HELPERS integer if you only need smallint.
- WASH_AREA_BUFFERS_PERCENT Always specify either NULL or NOT NULL.
- SWEEPER_THREADS_PERCENT It helps the optimizer make better
These settings will require testing to find decisions.
the right combination, if in doubt, stick to Make sure columns to be joined use
the defaults. exactly the same datatype to avoid implicit
conversion.
8. Extracting Data Avoid Cursors - IQ is not designed for
Single row processing.
Ways to extract data (from fastest to Set option
slowest): Public.OS_File_Cache_Buffering = ‘Off’;
o Using Temporary options Stops double buffering of IQ pages.
o Proxy tables (pointing to ASIQ Do not do single row inserts if possible -
from a remote server – Make sure Expect no more than 5,000 to 20,000
you tune the packet size) operations per hour.
o Redirection (ie: select * from Pipes can be faster than files – Load table
employee can read from a pipe, so if you can avoid
># empfile.txt) writing to disk this way it can be
significantly quicker.
9. General Choosing you indexes
Compiled by Leigh Kennedy Page 3 of 3
Thanks to Lou Stanton, Mark Mumy, Nick Ward & Sybase Education