Saturday, June 5, 2010

Innovator-C and What Ain't Free, Part Three


Picking up where we left of yesterday...

No Parallel backup/restore

If you're using Onbar and a Storage Manager to manage your backups you can back up dbspaces in parallel and reduce your backup times.

This is only beneficial if both of the following are true:

1. Your Storage Manager is writing to multiple media (i.e. you're backing up to multiple disk drives or tapes) in parallel.

2. Your Dbspaces are on different disk drives so reading 2 dbspaces in parallel actually reads from 2 drives in parallel.

And this really only comes into play if your databases are big enough to actually make you concerned about backup times.

My guess is that a lot of adopters of Innovator-C will simply use ontape to disk as a backup solution, probably with the following command

ontape -s -L 0 -t STDIO | gzip -c > backup.gz

No Partitioning

Partitioning is splitting up the data in a table, usually by some kind of expression.

Something along the lines of put rows for a table with column1 = 1 in partition1, column1 = 2 in partition2, column1 = 3 in partition3 and everything else in partitionRemainder.

One benefit of doing this is partition elimination for queries. If your SQL where clause has 'and column1 = 2' in it, Informix will know it only has to look at the rows in partition2 and won't scan partitions 1, 3 and Remainder and this can improve performance of your big daddy reporting type queries.


Friday, June 4, 2010

Excluded Innovator-C Features - Dude, It Will Be Ok


Back to the breakdown of the excluded features in the free for production Innovator-C.

No Private Memory Cache for VP

I enabled this on my not for free production environments when the feature came out and I didn't get any kudos for improving performance. It is a nice feature that probably benefits a lot of larger, more active engines than mine (and I consider my engines to be pretty active), all I'm saying is that you're not going to cry yourself to sleep on your huge pillow because this feature was left out of Innovator-C.

What is going on with this feature is you can enable a memory cache for each CPUVP giving individual CPUVP processes their own chunk of memory to allocate to the threads they are running. How does this help? There is no coordination or locking to be done with the other CPUVPs when you are dealing with private memory cache because only one CPUVP is manipulating the private cache (or at least this is how I understand this feature to work at the most basic level).

No Direct I/O for Cooked Files

If you are using cooked files (filesystem files) for your dbspace chunks to hold your data you can not enable Direct I/O for these cooked files in Innovator-C and this *can* result in a I/O performance decrease of, oh, I don't know, 5% or somewhere in that neighborhood.

Use raw devices and this feature exclusion is moot. Not a deal breaker IMO even if you do use cooked chunks. This is a relatively new feature and people were using cooked chunks without Direct I/O to do real stuff before it was added.

No I-STAR


I-Don't know exactly what this feature is, guess I won't miss it. I thought it might mean I can't reference another database on another engine with the following syntax on server1

select * from dbname@server2:table1;

But I tried this on my Innovator-C install and it worked. Any explanations welcomed in the comments.


Unavailable Features in Innovator-C - Don't Panic


If you have been following IBM's recent announcement of Innovator-C, a free version of Informix for all supported platforms that can be used in production environments, you may have seen a list that looks something like this:

Maximum of 4 CPUVPs
Maximum of 2GB memory allocated to Informix
Maximum of 2 Enterprise Replication Admin nodes
1 Read/Write HDR Server or 1 Read/Write RSS Server
No DBSpace Prioritization during backup/restore
No Recovery Time Objective Policy
No Private Memory Cache for VP
No Direct I/O for Cooked Files
No I-STAR
No Parallel Data Query (PDQ)
No High Performance Loader (HPL)
No Parallel Index Build
No Parallel backup/restore
No Partitioning
No Column Level Encryption
No Compression
No Label based access control (LBAC)
No Last commit concurrency
No Multiple triggers and views
No Web feature service
No Node DataBlade
No Auto-gather statistics during index build
No Point-in-time table recovery
No SQL Warehouse
No Shared Disk Secondary


That would be the excluded features list. At first glance you may be all WTF, but if you take a closer look at what is actually in the list you will see that IBM didn't really give away a crippled version of the engine for free. They simply eliminated some of the features that are only needed by very large engines and niche features.

Here is my take on the restrictions and excluded features: