Re: Performance whil Building Indices -- how does it scale?

2002-09-25 Thread Chris Stoughton

Yes, I increased this to 512M, as suggested in another answer, and the 
perfomance improved dramatically.  Thanks for the tip.

Jeremy Zawodny wrote:

On Mon, Sep 23, 2002 at 07:25:17AM -0500, Chris Stoughton wrote:
  

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?



Ack!  You're using the default, which is very small (compared to 1GB).

Start with 512M and work from there.

Jeremy
  





-
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




Re: Performance whil Building Indices -- how does it scale?

2002-09-24 Thread Jeremy Zawodny

On Mon, Sep 23, 2002 at 07:25:17AM -0500, Chris Stoughton wrote:
 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?

Ack!  You're using the default, which is very small (compared to 1GB).

Start with 512M and work from there.

Jeremy
-- 
Jeremy D. Zawodny |  Perl, Web, MySQL, Linux Magazine, Yahoo!
[EMAIL PROTECTED]  |  http://jeremy.zawodny.com/

MySQL 3.23.51: up 49 days, processed 1,042,150,139 queries (242/sec. avg)

-
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




Re: Performance whil Building Indices -- how does it scale?

2002-09-23 Thread Chris Stoughton

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