Joseph,

Thanks for the quick answer.

Very nice to know that adding an index forces a rebuild of all indices!  
(Side note -- I was going to configure the database with a minimal set 
of indices, and then watch to see how people use the database, and then 
add indices on popular columns.)

I did not notice a lot of i/o activity, but will run vmstat for a while 
and gather statistics

The machine has 1GB of RAM.

Here is the configuration:
bash-2.04$ more /etc/my.cnf
[mysqld]
datadir=/data/dp14.a/data/mysql
socket=/var/lib/mysql/mysql.sock
   [mysql.server]
user=mysql
basedir=/var/lib

[safe_mysqld]
err-log=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid


There is NO SETTING for key_buffer_size -- what value do you suggest?

Thanks,

Chris


Joseph Bueno wrote:

> Chris Stoughton wrote:
>
>> I have a table with a few million rows, wth 633 columns.  I want to 
>> create 10 inidices on this table, six single-column and four 
>> two-column inidices.  The database will be loaded once and remain 
>> static, and queried many times.  Please note that this is a "small" 
>> prototype for the actual database, which will have 40 times more rows.
>>
>> I used two strategies to create these tables:
>>
>> 1.  Create the indices in the "create table" statement
>> 2.  Load the table, and then use the "create index" statement for 
>> each index.
>>
>> With Strategy 1, the loading started nicely  using the "load data 
>> infile" command to load approx. 2000 records at a time.  It took 3 
>> seconds for each "load data infile" command.  After a few hundred 
>> "load data infile" commands, however, the time increased to two 
>> minutes per command.
>>
>> With Strategy 2, the loading went from start to finish at 3 seconds 
>> for each "load data infile" command.  But now, creating each index is 
>> taking longer.  Here is a log:
>>
>> Fri Sep 20 15:17:43 CDT 2002 create index objId on bestTsObj (objId)
>> Fri Sep 20 15:35:51 CDT 2002 create index fieldId on bestTsObj (fieldId)
>> Fri Sep 20 15:56:02 CDT 2002 create index targetObjId on bestTsObj 
>> (targetObjId)
>> Fri Sep 20 16:20:02 CDT 2002 create index ra on bestTsObj (ra)
>> Fri Sep 20 16:49:16 CDT 2002 create index decl on bestTsObj (decl)
>> Fri Sep 20 17:53:38 CDT 2002 create index u on bestTsObj (u)
>> Fri Sep 20 18:42:52 CDT 2002 create index g on bestTsObj (g)
>> Fri Sep 20 22:04:25 CDT 2002 create index r on bestTsObj (r)
>> Sat Sep 21 10:06:44 CDT 2002 create index i on bestTsObj (i)
>> Sat Sep 21 19:31:52 CDT 2002 create index z on bestTsObj (z)
>> Sun Sep 22 15:45:06 CDT 2002 create index ug on bestTsObj (u,g)
>>
>>
>> The first index was created in a reasonable amount of time (18 
>> minutes), but it is taking longer to create more indices.
>>
>>
>> With both strategies, no process is swapping heavily, and mysqld is 
>> not consuming available CPU cycles efficiently.
>>
>> Can you suggest how I can build multiple indices on large tables 
>> efficiently?  Will it help to create a "narrow" table with only the 
>> quantities I want to use in indices?
>>
>> We have installed mysql via rpm:
>> bash-2.04$ mysqladmin
>> mysqladmin  Ver 8.18 Distrib 3.23.36, for redhat-linux-gnu on i386
>>
>> bash-2.04$ uname -r
>> 2.4.18-xfs-1.1
>> bash-2.04$
>> What diagnostics do you suggest I run?
>>
>> Thanks
>>
> Hi,
>
> You should use strategy #1 since each time you create a new index, all
> index are rebuilt (this is why each new index is taking longer in
> strategy#2).
>
> Since mysqld is not consuming CPU nor swapping, it is probably doing a
> lot of disc I/Os. You can verify that with vmstat utility.
>
> You didn't specify how much RAM you have and what mysql configuration
> you are using (check /etc/my.cnf). You should pay special attention to
> 'key_buffer_size' parameter value since it has a major impact on index
> performance.
>
> Regards,






---------------------------------------------------------------------
Before posting, please check:
   http://www.mysql.com/manual.php   (the manual)
   http://lists.mysql.com/           (the list archive)

To request this thread, e-mail <[EMAIL PROTECTED]>
To unsubscribe, e-mail <[EMAIL PROTECTED]>
Trouble unsubscribing? Try: http://lists.mysql.com/php/unsubscribe.php

Reply via email to