Sponsored Content
Full Discussion: Regarding Multi-Threading
Top Forums Programming Regarding Multi-Threading Post 78335 by mbb on Tuesday 19th of July 2005 09:24:28 AM
Old 07-19-2005
Sorry for the delay. Informix is right up my street, so I can be more specific.

Disabling the transaction logging would mean that the inserts are not logged in the logical logs. If something went wrong you could not roll back your transactions. Transaction logging is an overhead you could do without, but by not using it there would be a risk. If your system is being used during the load it will not be an option. To switch transaction logging, use ontape. Use ontape to make a backup of the database before you do anything. It might actually be quicker to restore from a level 0 rather than trying to fix a botched, half done, load with your volumes.

Your indicies are definitely slowing things down, but without complete control of the table, there is not much you could do about transaction logging or dropping the indicies. Consider, the more records you insert, the larger the indicies become and the overhead becomes greater. In terms of the optimiser, it will progressively become more and more expensive to insert a row into your table. Your initial calculation of 16 hours may become even worse as the load continues.

Is it possible to stop the querying process? Is there a time during the 24hr period when the table is not used and can be loaded to?

Since you have posted in this forum, and not the scripting forum, I will assume you are using ESQL/C.

You could write a process that would:

1. Drop the indicies.
2. Load some or all of the data to the table.
3. Re-create the indicies
4. Update statistics for the table

When you write the process make sure that the insert statement is prepared
e.g.
sprintf(sqlvar, "insert into mytable values (?, ?, ?, %ld, ?)", num_var);

$prepare p_ins for $lv_sql;

Then, later in program, whenever a row is required to be inserted:

$execute p_ins using $var1, $var2, $var3, $var4;

This will help your inserts go a little quicker. The fastest way to perform inserts programatically is with using insert cursors.

$declare c_ins cursor for p_ins;
$open c_ins;
$put c_ins using $var1, $var2, $var3, $var4;
$close c_ins;

Read up some more on this, but your real problem is getting rid of the indicies on the table. They really, really do slow things up. Also consider that if you have other demands on your Informix system during the load, it will have a detrimental effect on your load's performance. Maybe a quiet time would be beneficial. You can always run a program you have written from cron.

Generally the principle of multi-threading or using multiple processes is good, but not too many at once. From my own experience, there will come a point that running more load processes concurrently will slow things down rather than speed them up.

As a digression, which might yet apply to your loading process, have you considered the impact of the queries on a table which is 5+ million rows? Are your indicies all working? Do you have any sequential scans?

You may investigate the optimiser by using the sql command sqlexplain. Also the sysmaster database has tables which hold the costs on sql statements run against the database. You should certainly investigate high cost sql statements and how they may be affecting your overall system performance.

Well hopefully I have given you plenty to be getting on with!

MBB
 

10 More Discussions You Might Find Interesting

1. Programming

Multi threading using posix thread library

hi all, can anyone tell me some good site for the mutithreading tutorials, its application, and some code examples. -sushil (2 Replies)
Discussion started by: shushilmore
2 Replies

2. Programming

Multi-threading questions

I've been doing some reading lately about threading (Posix threads) and I'm really curious about a couple things that I've read. I'm not sure if many people here have threading experience, but I thought it would be nice to be able to discuss some questions about it. (For the record, I did... (1 Reply)
Discussion started by: DreamWarrior
1 Replies

3. Programming

Multi threading using fork

Hi, I have written a code which will run a set of process using fork. I want to know from You how can i start another job when one of my job in my loop is completed My code is #include<stdio.h> #include<ctype.h> main() { int pid,cid; ChildProcess(); ... (1 Reply)
Discussion started by: sureshraju_ma
1 Replies

4. Programming

Multi threading?

I am not sure if multi threading is the correct term, but here is what I am trying to do. I have a while loop that displays the number 1, pauses, displays the number 2, pauses , displays the number 3 ad infinitum. It just keeps counting. While the screen displays the sequence of numbers counting... (4 Replies)
Discussion started by: enuenu
4 Replies

5. Programming

Multi-threading-- calling same function through different threads

Sir, Can I call same function in the start routines of different Threads. I have created two different threads....and wanna call same function from both threads....is it possible??? Also can I fork inside a thread??? (1 Reply)
Discussion started by: arunchaudhary19
1 Replies

6. Programming

Multi-threading

Hi, If we create 10 threads to invoke runQuery method at same time, Will queryProcessor will be overriden sometime or 10 different copies will be created? We are not using any sunchronzation mechnism in runQuery(). so there is not gurantee on QueryProcessor class variables right OR each 10... (1 Reply)
Discussion started by: jramesh1
1 Replies

7. Programming

Multi-threading

In this piece i implemented the gossip method. The first thread is invoked from inside the (msg is first sent from node -1 to 0 from main()) and the other threads are invoked from inside of the thread function itself. I used two mutexes and a condition variable to control the synchronization. ... (4 Replies)
Discussion started by: saman_glorious
4 Replies

8. UNIX for Dummies Questions & Answers

Confusion over Multi Threading

Hi, I am trying to get my head round Multi Threading and I have a few queries to try and clear up my confusion Q1. Is multi threading a hardware / chip level concept, an OS level or an application level concept ? I am trying to work out where SMT architecture fits in. Q2. What's the multi... (3 Replies)
Discussion started by: jimthompson
3 Replies

9. UNIX for Beginners Questions & Answers

Does UNIX support multi-Threading ?

Not just background process running ... but im looking if unix has any multi-threading concept like in Java, C# ... if not present, can you pls share the nearest feature in unix that is close to multi-threaded concept (3 Replies)
Discussion started by: i4ismail
3 Replies

10. UNIX for Beginners Questions & Answers

Multi threading in UNIX

Hi, Can we apply multi threading in Unix. I am using bash shell. We have a generic script to load the data to table based on file input. For each file there is an individual table to load. For each file found in directory I want to load the data in parallel to target table using ... (3 Replies)
Discussion started by: vedanta
3 Replies
Apache::Session::Store::Informix(3pm)			User Contributed Perl Documentation		     Apache::Session::Store::Informix(3pm)

NAME
Apache::Session::Store::Informix - Store persistent data in a Informix database SYNOPSIS
use Apache::Session::Store::Informix; my $store = new Apache::Session::Store::Informix; $store->insert($ref); $store->update($ref); $store->materialize($ref); $store->remove($ref); DESCRIPTION
Apache::Session::Store::Informix fulfills the storage interface of Apache::Session. Session data is stored in a Informix database. SCHEMA
To use this module, you will need at least these columns in a table called 'sessions': id char(32) # or however long your session IDs are. a_session lvarchar To create this schema, you can execute this command using the sqlplus program: CREATE TABLE sessions ( id char(32) not null primary key, a_session lvarchar ); If you use some other command, ensure that there is a unique index on the table's id column. CONFIGURATION
The module must know what datasource, username, and password to use when connecting to the database. These values can be set using the options hash (see Apache::Session documentation). The options are DataSource, UserName, and Password. Example: tie %hash, 'Apache::Session::Informix', $id, { DataSource => 'dbi:Informix:database', UserName => 'database_user', Password => 'K00l' }; Instead, you may pass in an already-opened DBI handle to your database. tie %hash, 'Apache::Session::Informix', $id, { Handle => $dbh }; The last option is LongReadLen, which specifies the maximum size of the session object. If not supplied, the default maximum size is 8 KB. AUTHOR
This module was written by Mike Langen <mike.langen@tamedia.ch>, based on the original for Oracle. SEE ALSO
Apache::Session, Apache::Session::Store::DBI perl v5.10.1 2010-10-18 Apache::Session::Store::Informix(3pm)
All times are GMT -4. The time now is 05:15 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy