Level: Introductory Andreas Weininger (andreas.weininger@de.ibm.com), Consulting IT Specialist, IBM
16 Mar 2006 IBM Informix® Extended Parallel Server (XPS) Version 8.51 brings enhanced performance and usability, improvements in loading and unloading, and improved onstat functionality. Learn about some of the key features of XPS V8.51 and gain insight into the general business problems they are intended to solve.
Introduction
IBM Informix Extended Parallel Server, Version 8.51, includes improvements in the following areas:
Some of the features cover several of these areas.
Performance enhancements
Managing
memory with resource classes
When many concurrent queries are running against a data warehouse,
the database server has to provide some kind of workload
management. The main mechanism for workload management in XPS up to
version 8.50 is the use of (bounded/implicit) PDQPRIORITY,
MAXPDQPRIORITY, and SCHEDULELEVEL (besides the use of I-Spy).
But there is often the need to ensure that one class of
queries will be able to run even while some other
resource-intensive queries might be running concurrently.
Up to version 8.50, XPS was designed in a way that all PDQ queries
allocate from a common pool of memory specified as
DS_TOTAL_MEMORY. This allows for the possibility of some of the
queries using all the memory while they are running, forcing other
queries to overflow to disk or wait until the memory becomes
available. A dedicated DSS memory for each class of queries ensures
that queries running in one class use only memory allocated for that class,
and queries in another class are still able to run if there is memory
still available for that class. Two typical examples for such
resource classes are online queries and batch processing. But
resource classes can be defined even with much finer granularity.
MAXPDQPRIORITY is used to indicate the percentage of resources
that may be granted to a single query running on the server. This is applied
regardless of the database(s) it operates on and allows a scaling
factor on the requested amount of memory. On a single server there is
no feature in XPS V8.50 that would prevent a set of queries
from using all of the DSS memory. This can only be achieved
presently by using multiple server instances.
This new feature gives database administrators better control over
the resource utilization on a query classes level by being able to
partition the memory between different classes of queries. In this
article, this new feature will be referenced by using the phrase
"Resource Classes."
This feature introduces the concept of a
DS_CLASS
. Any database or user could work
under an assigned DS_CLASS. A DS_CLASS will determine what portion
of the DSS memory will be parceled out to a database or a user. A database administrator
may indicate using an ONCONFIG variable the desired partitioning of the
DSS memory between various DS_CLASSes.
For instance, the database administrator may see two classes of
queries. An example are those that are used for batch and online
queries. Another example can be a database that is to undergo a load
(database A) versus another database that is to be used for report
generation (database B). A database administrator might decide that
the loads running on database A should not be allowed to use up all of
the DS_TOTAL_MEMORY the server is configured for. The queries used for
generating reports from database B should always have a bulk of the
DSS memory "reserved" for its use. In such scenarios, the
database administrator could define two DS_CLASSes and specify that
database A belongs to class DS_CLASS C1 and database B belongs to
class DS_CLASS C2. DS_CLASS C1 and DS_CLASS C2 would have predefined
assignments of portions of the DSS memory using the onconfig
parameter. For example: DS_CLASS C1 = 30%; DS_CLASS C2 = 70%.
Each resource class will be defined in the onconfig file in a
section which starts with DS_CLASS_NAME and
ends with the key word END:
DS_CLASS_NAME <classname>
CLASS_DS_MEM_QUOTA <memquota>
CLASS_DS_MAX_QUERIES <maxqueries>
END
|
<classname> is an identifier for the
class. It should not contain lower case characters. <memquota> is a number determining the
percentage of memory assigned to the classed defined. <maxqueries> determines the maximum number
of queries which are allowed concurrently for this class.
These class definitions may be repeated for as many classes as the
database administrator desires to define. So, for example, one may
have:
DS_CLASS_NAME C1
CLASS_DS_MEM_QUOTA 35
CLASS_DS_MAX_QUERIES 100
END
DS_CLASS_NAME C2
CLASS_DS_MEM_QUOTA 40
CLASS_DS_MAX_QUERIES 3
END
DS_CLASS_NAME C3
CLASS_DS_MEM_QUOTA 25
CLASS_DS_MAX_QUERIES 50
END
|
Here, the server will be defined to have three DS_CLASSes, C1, C2,
and C3, with portions of DSS memory divided as 35%, 40%, and 25%,
respectively, between these classes. Queries on databases associated
with DS_CLASS C1 will thus be granted memory from 35% of
DS_TOTAL_MEMORY. All the memory not assigned explicitly to a DS_CLASS
will be transfered to an implicitly defined resource class DEFAULT. This class will be used by anyone not
explicitly assigned to a resource class.
A new SET ENVIRONMENT for a variable DS_CLASS has been
introduced. The syntax is:
SET ENVIRONMENT DS_CLASS [<class>] | [IMMUTABLE | MUTABLE] |
This SET ENVIRONMENT statement will usually to be executed within
sysdbopen() (user or public). The IMMUTABLE option would be used in
order to prevent users from modifying the values defined by the
database administrator.
The following will help you understand the impact of this feature better:
- DS_CLASS will only be set by a database administrator or
the database owner when the database is opened (using
sysdbopen) and can be modified subsequently. However, the
definition of resource classes isonly be possible in the
onconfig, or may be changed with onutil while the server is
up.
- MAX_PDQPRIORITY, PDQPRIORITY, and DS_TOTAL_MEMORY are closely
interrelated configuration parameters used in resource allocation for
queries. There are other variables such as IMPLICIT_PDQ and
BOUND_IMPL_PDQ that are also related. When DS_CLASS is effective
for any query, these parameters continue to take effect but at a
DS_CLASS level. For instance, the PDQPRIORITY will automatically
pertain to the percentage of the DSS memory assigned to the PDQ class
the database is assigned to rather than DS_TOTAL_MEMORY.
- For any query, a DS_CLASS for the current database will
drive RGM behavior. To keep things simple, DS_CLASS for
multi-database queries or for databases opened implicitly will
not be treated differently. For such queries the DS_CLASS for
the current database would still be the determining factor for
RGM to use. Note that an application may connect to a database
making it current, but then run a query on another
database.
- If the DS_CLASS is specified in public.sysdbopen() and a
user.sysdbopen() is created, then the database administrator
has to propagate the DS_CLASS setting to the user.sysdbopen()
if all users should use the same DS_CLASS or the database
administrator may set a user-specific value.
- When a DS_CLASS is not explicitly specified because no
resource classes are defined in the onconfig file and because
the SET ENVIRONMENT DS_CLASS statement is not used, the old
methodology would continue to be functional.
- Dynamic change of quotas using onutil SET command is supported
given that DS_TOTAL_MEMORY, DS_TOTAL_TMPSPACE, DS_MAX_QUERIES,
DS_ADM_POLICY can be modified dynamically.
- "onstat -g rgm" has been enhanced to display the
defined resource classes. Furthermore, the RGM Wait and Active
Queue entries are DS_CLASS-specific and are repeated for each
of the defined classes. "onstat -g env" now also
prints the value of the DS_CLASS variable. "onstat -g
mut" prints the mutability of this variable. "onstat
-g ses" has been enhanced to show the effective class for
the session if there is a current database associated with
that session. Of course, onmode can also be used to change the
mutability of the parameter.
Limit for IFMX_AIXKAIO_NUM_REQ increased
The maximum number of outstanding kaio requests per CPU VP was limited to
4096. For some large systems this limit was too small and caused some
performance degradation. Now the maximum value for the number of
outstanding kaio requests has been increased to 8192. The actual value
may changed by setting the environment variable IFMX_AIXKAIO_NUM_REQ
Loading/Unloading enhancements
Support
for DB2 load files in external tables
Delimited ASCII flat files are usually are a fast and convenient way
to exchange data between different database systems. But when
loading data from a DB2 system into XPS or loading data from XPS into
DB2, it is not that easy in XPS versions up to 8.50 since, unfortunately,
the load file formats for delimited files differ considerably between
XPS and DB2.
Table 1 lists some of the key differences how data of different data
types is represented in load files for XPS and DB2,
respectively. Therefore, up to XPS 8.50 it has often been necessary to
preprocess load files before actually loading them.
Table 1. Data type
representation in XPS and DB2 load files
| Data type | Representation in XPS | Representation in DB2 |
|---|
| char(10) |
ababab
|
"ababab "
| | varchar(10) |
cd"cd
|
"cd""cd"
| | integer |
10
|
10
| | decimal(20,5) |
22.22000
|
+000000000000022.22000
| | float(10) |
123.456
|
+1.23456E+002
| | money |
$33.33000
| no equivalent data type | | date |
10/10/2004
|
20041010
| | datetime (XPS) timestamp (DB2) |
2004-11-11 11:11:11.12300
|
2004-11-11-11-11-11-123000
| | byte (XPS) blob (DB2) | hexadecimal representation | raw data with double quotes | | text (XPS) clob (DB2) | char data with newlines escaped | char data with double quotes |
XPS V8.51 introduces a new format called DB2, which will format the
external file to match the default export format of DB2 for a file of
type del. The environment variables DBDATE (or GL_DATE) and DBMONEY
can be used in conjunction with this new format to match the external
table format to that required for loading into the DB2 database
server. In addition, file-type modifiers in DB2 can be used to allow
DB2 to understand data layouts. This is particularly the case with the
XPS datetime to the DB2 timestamp conversion, as DBTIME (or
GL_DATETIME) cannot be used to influence the data format in an
external table. The timestamp modifier is only available in DB2
version 8.1.2 or later, so it should be noted that full compatibility
with DB2 is only available for DB2 versions later than this. When the
DB2 format is used, the default delimiter is still "|". When the
DB2 default delimiter "," is used, this has to be specified
explicitly with the DELIMITER option in the external table definition.
Support
for long record delimiters
The default record delimiter for external tables in XPS is a linefeed
character. It has been possible in the past to change this record
delimiter with the RECORDEND option to a
different character. But since some operating systems like Windows® use
multi-character record delimiters, this has often not been sufficient.
In XPS V8.50, the maximum length of the record delimiter is now
128. The CRLF delimiter of Windows can now be specified as:
Usability enhancements
Online Repack Support
Tables are often loaded in XPS for performance reasons with light
appends only. Yet light appends never write to existing pages. They
create new pages very quickly in memory and append them to the end of
the table during commit. This makes for extremely fast loading but can
also lead to inefficient space utilization. If rows are loaded using
light appends and then deleted, the space they occupied will never be
reused by a subsequent light append, and this load/delete, load/delete
cycle can create a very large empty table in short order.
The main purpose of this feature is to provide the ability to
reclaim the empty space in a table for use by future light appends,
without having to make the table unavailable. This means other users
will be allowed to modify the table while the repack operation is
going on.
This feature allows an XPS administrator to reorganize the data
in a table or fragment, moving rows from higher logical page numbers
to any free space in lower logical page numbers. Empty extents and
pages at the end of the table will then be freed for reuse by other
tables in the dbspace.
The feature will be activated through the onutil utility, using a
new REPACK DATA command, as in:
UNIX%>onutil REPACK DATA IN TABLE stores_demo:customer |
Indexed tables cannot be repacked. Nor can static or external
tables.
Repacking of both logged and non-logged tables will be supported.
Explain
plan for currently running query
Previously to XPS V8.51, assuming there was no prior set explain run
in the session, one could not get a query plan for a query that had
already started executing. The command onmode -q explain
<session_id> on | file <fname> | fileappend <fname>,
in most cases, obtained the query plan for the subsequent queries that will be
run in that session but not the current query.
This feature introduces a new keyword immediate that can be
passed to the onmode -q explain session_id
command to print the query plan for any running query. It will work
for both serial and parallel plans. The feature is particularly
useful for performance-related problems related to sub-optimal query
plans.
This is the new syntax diagram for the onmode command:
onmode -q explain <Sid> { off | avoid_execute | {{on | immediate}
[ file <fname> | fileappend <fname>] }}
|
All the commands that used to work in V8.50.FC1 are still supported.
Here is a list of the additional combinations that are supported in V8.51:
- on file <filename>: This is same as file <filename>
- on fileappend <filename> : same as fileappend <filename>
- immediate - will append the query plan of the current query
to the file sqexplain.out in the sessions' CWD.
- immediate file <filename>: will (over)write the query
plan of the current query to $CWD/filename
- immediate fileappend <filename>: will append the query
plan of the current query to $CWD/filename
If neither on nor immediate are passed to the file and fileappend
parameters, it defaults to on.
If the database administrator is not aware of the user's current working directory and
wants it in some fixed directory, he/she can specify the full pathname
of the filename as a parameter to file/fileappend.
The onmode -q explain command is allowed only on the connection
coserver.
Grant option for roles
Often many different (DBA) users have to be able to create objects
like views in a data warehouse. Having to grant all access rights to
each individual user can be very tedious if the number of these DBA users is very large, especially when these access rights are really
not tied to the user but to a role that the user is currently
executing. This is specifically the case when roles of users change
often.
Until XPS V8.50 the grant command allowed only a user list, but no roles when the with grant
option was used:
GRANT <table level privilege> TO <user list> WITH GRANT OPTION |
The with grant option is necessary so that users to which
privileges are granted may themselves grant privileges.
XPS V8.51 now allows roles to be specified. For instance if
r1 is a role and t is a table, the following statement is
valid in XPS V8.51:
GRANT SELECT ON t TO r1 WITH GRANT OPTION |
Another related problem is view management. Currently, the XPS
server checks for the permission on tables for the user when the
user is creating a view. The user must have the permission on all the
tables specifically given through GRANT <table level privilege>
TO <user>.
The new feature gives the user a restricted ability to grant
permissions to roles with the new with grant option and also
gives the user more flexibility creating views based on roles
permissions with grant option.
Here is a list of the rules associated with the grant with grant
option for Roles:
- Permissions given to a role with the grant option can only be
granted by a database administrator or another user/role that has
already the with grant permissions
- Revoke of the roles permissions can only be done by the
grantor of the permission or by a database administrator
- A revoke of a permission granted to a role with the grant
option will also drop the dependent permissions granted by this role
to other users/roles
- Granting permissions to a role can only be done using the
grant/revoke <permission> on table to/from <user> as
<role> syntax by a database administrator or the Informix user
- In addition to the actual existing ability to create a
view with permissions based on the permissions of a role,
the creator of the view will be given the ability
to inherit the with grant option for the permission
from the role which gives him the permissions to create the view.
- When we create a view with a different owner than the
database administrator/Informix, we will in addition to checking the permissions of the
user to see if they can create this view also determine if a default
role is defined for this user and if so, see if the permissions of
that role or any cascading role defined in the default role provide
permissions that allow this view to be created.
- Cascading roles will be allowed
when creating a view; creating the view as an owner as
well as a database administrator.
- If a role is revoked from a user, the views created with the
permissions of this role will remain in the system because the owner of
the view is the user, not the role
This feature is only activated if the variable IFMX_ROLES_WITH_GRANT is set in the environment of
the database server.
Restrict DBspace usage
In a data warehouse there are often many users who have to be able to
create database objects like permanent or temporary tables or
indexes, and sometimes even whole databases. Examples are often ETL
jobs, but even users that are only submitting queries often have to
be able to create temporary tables for intermediate results. Prior to
V8.51, any user who was allowed to create these objects could create
them anywhere. This often caused a problem, since a reckless user
could claim all the space in an important dbspace or dbslice and
prevent or severely inhibit other users or applications from running.
XPS V8.51 introduces a method for the database administrator to
restrict users to create databases and database objects only in
certain dbspaces and dbslices. This is done with an environment
variable USABLE_SPACES. This variable may
be set:
- in the environment of the server
- in the environment of a client/application
- in the environment of a session for a specific user
USABLE_SPACES specifies a list of dbspaces
and/or dbslices. Users with resource permission are only able to
create databases or database objects in these dbspaces and
dbslices. This command will only impact users with resource
permission. Database administrators will not have any change in
dbspace access. Users with lower permissions such as connect cannot
create tables or indexes so this will not have an impact them, as well.
If USABLE_SPACES is set in the server environment, it will affect all
users with resource permission during all database and database object
creation operations. Setting USABLE_SPACES in the server environment
is done by setting IBM_XPS_PARAMS in the server environment before the
XPS server is started. The syntax for ksh and bash is
export IBM_XPS_PARAMS='USABLE_SPACES=dbspace list'
|
The same ksh and bash command is used for setting USABLE_SPACES in
the client environment before the start of the client. The only
difference is that it is effective only for the client for which it
was set.
The following SQL syntax is used for setting it in a session:
SET ENVIRONMENT USABLE_SPACES ('<dbspace/dbslice list>'
| 'DEFAULT SPACE' | DEFAULT|IMMUTABLE|MUTABLE)
|
In this case the statement will only affect the following SQL
statements in the session in which it was set.
If a dbspace/dbslice list is specified, USABLE_SPACES will be set
to this list.
The 'DEFAULT SPACE' sets USABLE_SPACES to the dbspace/dbslice
list that was specified in the SET TABLE_SPACE command.
The DEFAULT option allows the user to use all available spaces. This is
the default behavior so this command will only be needed if
USABLE_DBSPACES has already been set.
The IMMUTABLE option is also a part of the SET ENVIRONMENT command.
It is needed in order to prevent users from modifying the values
defined by the database administrator. This will be done after
setting the value. The MUTABLE option makes the value changeable again.
In order for this feature to work, USABLE_SPACES must be set prior
to running any statements that will create database objects such as
CREATE TABLE and CREATE INDEX. This command must be executed each
time a new database is opened. The best method to ensure this is to
create a sysdbopen() procedure for each user or PUBLIC with this
statement in it.
Please note that a user who created a database is not restricted
with USABLE_SPACES for creating additional database objects in this
database.
Force DDL execution
A common problem for database administrators is that DDL operations
(for instance, ALTER FRAGMENT ON TABLE ATTACH/DETACH commands) have to wait for
all operations on the tables involved to be finished before the DDL
can be executed. On a busy system this can mean a very long to wait or
the database administrator has to cancel all sessions manually that
are currently using these tables. (There is also the possibility that
during the cancellation of these sessions, a new one may get in). If the
wait duration is set to a fixed interval, the DDL operation may also
encounter an error -24121 ("Data Dictionary locking error"). Although
this is expected behavior, this can be very annoying for a database
administrator.
XPS V8.51 solves this problem by introducing a switch, which, if
turned on, causes a DDL statement to cancel all other sessions using
the same table.
A new SET environment variable FORCE_DDL_EXEC has been introduced for
this feature. When set, the DDLs in such a session will abort all the
sessions (except itself) holding locks on the table being altered.
The following SQL statement can be used to change the state of this
environment variable:
set environment FORCE_DDL_EXEC [ON | OFF | DEFAULT | IMMUTABLE | MUTABLE] |
The default setting is off. This environment can be set to immutable
by the database administrator in the sysdbopen stored procedure so
that users other than the database administrator cannot change this
environment variable.
It's not necessary to set FORCE_DDL_EXEC
in the sessions that get aborted.
It is recommended to use the "SET LOCK MODE TO WAIT" command to set
the wait time to infinite within the session, when FORCE_DDL_EXEC is
used. This ensures that the DDL on a table T will wait while all such
sessions holding locks on table T are aborted and while the
transactions are rolled back. The DDL will then be executed.
Onutil display page enhancements
The onutil display page command is now able
to display also the contents of a bitmap page. This is demonstrated by
this example:
$ onutil display page 0 in table stores_demo:customer
--- Contents of pagedump:10125.0 on coserver 1 ---
(file /usr/informix/tmp/onc_dump.1.13194.57ffe)
Physical Address 1:4712
Partnum: 0x10125 Page: 0x0
addr stamp nslots flag type frptr frcnt next prev version
1:4712 13177 0 4 FREE 56 4036 0 0 0
0:8 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
Page dump completed.
|
Therefore, this output for a bitmap page is now very similar to the
output of the oncheck -pp command for a bitmap page in Informix Dynamic Server (IDS).
Maintenance mode for engine
There are times, when a database administrator has to ensure that
no one else is executing operations on the database while he himself
performs some critical task. For this, it would be handy to have a
mode that allowed only the user informix to query and modify data in the
server. Up to V8.50 XPS supports a Quiescent Mode, which will allow
connections by the onutil utility to check and repair certain data
structures, but no true user sessions that perform ad-hoc DDL/DML
operations are supported. The only mode that supports user sessions is
On-Line mode, which is the main operational server mode and by itself
places no restrictions on user connections. Administrators must
restrict user connections at the application, OS, or network level in
order to perform maintenance on an on-line server, which can be
inconvenient and time-consuming.
XPS V8.51 introduces Single-User Mode, which is a sort of restricted
on-line mode, where logging and database operations are allowed, but
only by the user informix. It is also pretty easy for XPS
administrators to switch between this new mode and other modes.
The feature works for local connections as well as remote
connections through I-STAR.
The new oninit -j command will boot the
server into Single-User mode. A new onmode
-j command switches the server from either On-Line or Quiescent
mode into Single-User mode. It is possible to switch from Single-User
mode into On-Line, Quiescent, and Off-Line modes with the existing
onmode -m, onmode
-s and onmode -k commands,
respectively. The onstat banner now displays "Single-User" when the
server is in the new mode.
Onstat enhancements
Overflow for group iterators shown in onstat -g xmp
When monitoring a data warehouse system, it is important to look
for queries that are very slow or which are using the resources of
XPS in the wrong way. One particularly important task in this regard
is to look for queries that have overflow, or which do not have
sufficient memory allocated to execute a iterator completely in
memory. An important tool for monitoring this is onstat -g xmp, which shows for each iterator
instance whether overflow occurs for it.
Up to V8.50 onstat -g xmp has shown overflow only for join
iterator. But since overflow can also be a serious problem for group
iterators, XPS V8.51 also shows whether overflow occurred for
instances of group iterators.
The following example shows the overflow highlighted:
$ onstat -g xmp
IBM Informix Extended Parallel Server Version 8.51.FN567 -- On-Line --
Up 21:35:18 -- 39608 Kbytes
XMP Query Segments
segid width numbr qryid sessid flags seqno
0 1 1 33 1.30 0x11a 1
1 2 1 33 1.30 0x118 3
XMP Query Operators
opaddr qry segid branch brtid opname phase rows in1 in2
0x70000004001d878 33 1 0-0 149 xchg open 1962 0x70000004001dba0 0x0
0x70000004001dba0 33 1 0-0 149 group overflow 2030 0x70000004001e370 0x0
0x70000004001e370 33 1 0-0 149 xchg done 4965851 0x0 0x0
|
Update statistics status shown for temp tables in onstat -g ses
Bad query plans are often due to missing statistics on the tables
involved in a query. Statistics are not only important for
the query plans but also for the allocation of resources to a query if
implicit PDQ priority is used. Therefore, if a query is performing
badly, a database administrator usually checks first whether all
of the tables involved in a query have an "update statistics" done on
them. For permanent tables, this is easy to check. But for
temporary tables (temp and scratch), this was really difficult for XPS
versions up to V8.50.
XPS V8.51 shows in the output of the onstat -g
ses <sessionid> which temporary tables of the currently active
session <sessionid> have statistics and which don't.
The following examples show this. In the highlighted part at the
end, you can see that two temporary tables have been created in session
30. The table temp1 has statistics, but the table temp2 doesn't have
statistics.
$ onstat -g ses 30
...
User-created Temp tables :
ddtabp partnum tabname rowsize ref lock use UpdStat
700000030581050 30003 temp2 4 0 0 0 N
7000000304fa850 ffff temp1 13 0 0 0 Y
|
See the attached onstat output for more detail.
Original SQL text shown in onstat -g sql/stmts
Up to XPS V8.50 onstat -g sql and onstat -g stmts use an internal function to
beautify the last parsed statement. Unfortunately, some statements with
comments are no longer semantically equivalent after this beautifying
step. This is a problem if a database administrator wants to copy a
statement from the onstat output to analyze it further.
XPS V8.51 provides a possibility for these onstat commands to
display the SQL statements in the way in which they were originally
formated. The environment variable IFMX_NO_SQL_REFORMAT has to be set to get the
original formating.
This example shows the difference:
select --test test * from test
|
is changed to
select -- test test
* from test
|
Real table name shown in onstat -g xqp
onstat -g xqp and the query plan part of
sqexplain have previously only show the alias names of tables, if
tables aliases were used. This causes a problem if one wants to know
the real tables accessed in the query.
XPS V8.51 now also shows the real name of the table in the "misc info"
part of the output. The real tablename is shown in parentheses after
the alias.
The following example demonstrates this. The scan in segment 5 is
on table "q12i002l". In the query the alias "l" is used for this
access. The scan in segment 7 uses the same table, but with the alias
"d". Finally the scan in segment 6 accesses the table "q12i002", an access
for which the alias "o" was used in the query.
oper segid brid width misc info
-----------------------------------------
scan 5 0 21 l (q12i002l)
scan 6 0 21 o (q12i002)
hjoin 4 0 12
scan 7 0 21 d (q12i002l)
hjoin 3 0 12
group 3 0 12
group 2 0 12
flxins 1 0 12
|
Conclusion
XPS V8.51 provides features like the resource classes that allow
the database administrator to make more efficient use of the available
hardware resources of the data warehouse. In addition, XPS V8.51
includes several features like the single-user mode and various
monitoring improvements to simplify the administration of an XPS
server even further. Other features like the "restrict dbspace usage"
feature or the roles enhancements allow better control what users of
the data warehouse may or may not do. And finally the availability of
the data warehouse is improved by features like the online repack.
Resources Learn
Get products and technologies
-
Build your next development project with
IBM
trial software, available for download directly from developerWorks.
About the author  | 
|  | Andreas Weininger is a member of the IBM Business Intelligence Technical
Sales team. He has been working with XPS on large data warehouse projects
since 1995, especially concentrating on performance aspects.
|
Rate this page
|