Skip to main content

skip to main content

developerWorks  >  Information Management  >

New features in IBM Informix Extended Parallel Server, Version 8.51

developerWorks
Document options

Document options requiring JavaScript are not displayed


My developerWorks needs you!

Connect to your technical community


Rate this page

Help us improve this content


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 typeRepresentation in XPSRepresentation 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 representationraw data with double quotes
text (XPS) clob (DB2)char data with newlines escapedchar 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:

RECORDEND "\015\012"

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:

  1. in the environment of the server
  2. in the environment of a client/application
  3. 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

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


Please take a moment to complete this form to help us better serve you.



 


 


Not
useful
Extremely
useful
 


Share this....

digg Digg this story del.icio.us del.icio.us Slashdot Slashdot it!



Back to top


IBM and Informix are trademarks of IBM Corporation in the United States, other countries, or both. Windows is a trademark of Microsoft Corporation in the United States, other countries, or both. UNIX is a registered trademark of The Open Group in the United States and other countries. Other company, product, or service names may be trademarks or service marks of others. Other company, product, or service names may be trademarks or service marks of others.