My.cnf.huge is not good enough for your system specs. Calculate the Key
efficiency from the show status command. I bet the key efficiency is less
then 90% or so. In this case increase the key_buffer_size try 512M. A good
stat for a proper key_buffer_size in the sum of all index files block size.
This would be optimal since the index remains in memory. Increase your
tmp_table_size to 64 MB your prob going to tmp_table and mysql uses this
buffer for some internal optimizations. Also try increasing range alloc
block size  a little bit, you might see a 5% perf boost.



DVP
----
Dathan Vance Pattishall     http://www.friendster.com


> -----Original Message-----
> From: Richard Bennett [mailto:[EMAIL PROTECTED]
> Sent: Thursday, October 21, 2004 5:48 AM
> To: [EMAIL PROTECTED]
> Subject: mysql optimising large table
> 
> Hi,
> 
> I have a table containing logfiles in mysql v4.0, myISAM.
> The table has about 8.5 million records.
> I'm using the my_huge.cnf file on mandrake10 Linux with 1 gig ram and
> 250gig
> HD space.
> Some Info:
>  Space usage :
> Type    Usage
> Data    3,063   MB
> Index   660,855         KB
> Total   3,708   MB
> 
>  Row Statistic :
> Statements      Value
> Format  dynamic
> Rows    8,781,134
> Row length ø    365
> Row size  ø     443 Bytes
> Next Autoindex  8,781,135
> Creation        Oct 14, 2004 at 09:23 PM
> Last update     Oct 20, 2004 at 11:57 AM
> Last check      Oct 14, 2004 at 09:34 PM
> 
>  Indexes :
> Keyname                 Type    Cardinality     Field
> PRIMARY                 PRIMARY         8781134         id
> originalID              UNIQUE  8781134         originalID
> databaseName INDEX      9               databaseName
> origID          INDEX   8781134         origID
> destinationcode INDEX   8625    destinationcode
> finaldestination        INDEX   2195283         finaldestination
> datetime                INDEX   8781134         datetime
> 
> 
> Normally i'd like to be able to get statistics from the database in 1month
> chunks (about 1 million records) but if I do a:
> SELECT count( * )
> FROM `table`
> WHERE datetime
> BETWEEN '2004-09-01 00:00:00' AND '2004-10-01 00:00:00'
> 
> It will return the count: 1372668, but it takes 2 or 3 minutes to do this.
> If
> I add any other (indexed) criteria it becomes even slower.
> 
> I have noticed if I just request 1 or 2 days' records, the result comes
> fast, but once the count gets over 100000 or so, everything slows down.
> 
> My own solution at the moment is to make temporary tables for each month,
> as
> things seem to stay fast with less than 2mil. records in a table.
> 
> Does anyone have any advice on how to optimise this setup?
> 
> Thanks,
> Richard.
> 
> PS, some extra mysql info: (sorry for the long post)
> 
>  Server variables and settings
>  Variable        Global value
> back log        50
> basedir         /
> binlog cache size       32768
> bulk insert buffer size         8388608
> character set   latin1
> character sets  latin1 big5 czech euc_kr gb2312 gbk latin1_de sjis tis620
>  ujis dec8 dos german1 hp8 koi8_ru latin2 swe7 usa7 cp1251 danish hebrew
>  win1251 estonia hungarian koi8_ukr win1251ukr greek win1250 croat cp1257
>  latin5 concurrent insert       ON
> connect timeout         5
> convert character set
> datadir         /var/lib/mysql/
> default week format     0
> delay key write         ON
> delayed insert limit    100
> delayed insert timeout  300
> delayed queue size      1000
> flush   OFF
> flush time      0
> ft boolean syntax       + -><()~*:""&|
> ft min word len         4
> ft max word len         254
> ft max word len for sort        20
> ft stopword file        (built-in)
> have bdb        NO
> have crypt      YES
> have innodb     YES
> have isam       YES
> have raid       NO
> have symlink    YES
> have openssl    NO
> have query cache        YES
> init file
> innodb additional mem pool size         1048576
> innodb buffer pool size         8388608
> innodb data file path   ibdata1:10M:autoextend
> innodb data home dir
> innodb file io threads  4
> innodb force recovery   0
> innodb thread concurrency       8
> innodb flush log at trx commit  1
> innodb fast shutdown    ON
> innodb flush method
> innodb lock wait timeout        50
> innodb log arch dir     ./
> innodb log archive      OFF
> innodb log buffer size  1048576
> innodb log file size    5242880
> innodb log files in group       2
> innodb log group home dir       ./
> innodb mirrored log groups      1
> innodb max dirty pages pct      90
> interactive timeout     28800
> join buffer size        131072
> key buffer size         402653184
> language        /usr/share/mysql/english/
> large files support     ON
> local infile    ON
> locked in memory        OFF
> log     OFF
> log update      OFF
> log bin         ON
> log slave updates       OFF
> log slow queries        OFF
> log warnings    OFF
> long query time         10
> low priority updates    OFF
> lower case table names  0
> max allowed packet      1047552
> max binlog cache size   4294967295
> max binlog size         1073741824
> max connections         100
> max connect errors      10
> max delayed threads     20
> max heap table size     16777216
> max join size   4294967295
> max relay log size      0
> max seeks for key       4294967295
> max sort length         1024
> max user connections    0
> max tmp tables  32
> max write lock count    4294967295
> myisam max extra sort file size         268435456
> myisam max sort file size       2147483647
> myisam repair threads   1
> myisam recover options  OFF
> myisam sort buffer size         67108864
> net buffer length       16384
> net read timeout        30
> net retry count         10
> net write timeout       60
> new     OFF
> open files limit        1024
> pid file        /var/lib/mysql/server.pid
> log error
> port    3306
> protocol version        10
> query alloc block size  8192
> query cache limit       1048576
> query cache size        33554432
> query cache type        ON
> query prealloc size     8192
> range alloc block size  2048
> read buffer size        2093056
> read only       OFF
> read rnd buffer size    262144
> rpl recovery rank       0
> server id       1
> slave net timeout       3600
> skip external locking   ON
> skip networking         OFF
> skip show database      OFF
> slow launch time        2
> socket  /var/lib/mysql/mysql.sock
> sort buffer size        2097144
> sql mode        0
> table cache     457
> table type      MYISAM
> thread cache size       8
> thread stack    196608
> tx isolation    REPEATABLE-READ
> timezone        CEST
> tmp table size  33554432
> tmpdir  /home/rich/tmp/
> transaction alloc block size    8192
> transaction prealloc size       4096
> version         4.0.18-log
> version comment         Source distribution
> wait timeout    28800


--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:    http://lists.mysql.com/[EMAIL PROTECTED]

Reply via email to