Re: Performance problems on MySQL

2010-09-06 Thread Alexandre Vieira
Hi,

We're chaning it to INT(9). Apparently someone remembered to change the type
of data in this field from an alphanumeric value to an INT(9).

I'm going to change this asap.

Thanks

BR
AJ

On Mon, Sep 6, 2010 at 5:17 AM, mos mo...@fastmail.fm wrote:

 At 04:44 AM 9/3/2010, Alexandre Vieira wrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key |
 key_len
 | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY | 23
 | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ


 Alexandre,
 Do you have UserId declared as CHAR? It looks numeric to me. If it is
 stored as an integer then don't use the ' ' in the select statement
 otherwise it needs to convert it.
 If UserId values are integers and you have the column defined as CHAR, then
 declare the column UserId as integer or BigInt and the searches should be
 faster than searching on CHAR.

 Mike




  On Thu, Sep 2, 2010 at 8:52 PM, Johnny Withers joh...@pixelated.net
 wrote:

  What about an explain of this query:
 
 
  SELECT * FROM clientinfo WHERE userid='182106617';
 
  -JW
 
 
  On Thu, Sep 2, 2010 at 9:35 AM, Alexandre Vieira nul...@gmail.com
 wrote:
 
  John, Johnny,
 
  Thanks for the prompt answer.
 
  mysql SHOW CREATE TABLE clientinfo;
 
 
 ++--+
  | Table  | Create
  Table
  |
 
 
 ++--+
  | clientinfo | CREATE TABLE `clientinfo` (
`userid` varchar(21) NOT NULL default '',
`units` float default NULL,
`date_last_query` datetime default NULL,
`last_acc` int(10) unsigned default NULL,
`date_last_units` datetime default NULL,
`notification` int(10) unsigned NOT NULL default '0',
`package` char(1) default NULL,
`user_type` varchar(5) default NULL,
PRIMARY KEY  (`userid`)
  ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
 
 
 ++--+
  1 row in set (0.00 sec)
  mysql SHOW INDEX FROM clientinfo;
 
 
 +++--+--+-+---+-+--++--++-+
  | Table  | Non_unique | Key_name | Seq_in_index | Column_name |
  Collation | Cardinality | Sub_part | Packed | Null | Index_type |
 Comment |
 
 
 +++--+--+-+---+-+--++--++-+
  | clientinfo |  0 | PRIMARY  |1 | userid  |
  A |  460056 | NULL | NULL   |  | BTREE  |
   |
 
 
 +++--+--+-+---+-+--++--++-+
  1 row in set (0.00 sec)
 
 
  SELECT * FROM clientinfo WHERE userid='182106617';
 
  UPDATE clientinfo SET
 
 units=0.0,date_last_query=now(),user_type='POS',last_acc=167,date_last_units=now(),notification=0
  WHERE userid='152633876';
 
  INSERT INTO clientinfo VALUES
  ('171918726',101.0,now(),1,now(),0,'D','PRE') ON DUPLICATE KEY UPDATE
  units=101.0, date_last_query=now(), last_acc=1, date_last_units=now(),
  notification=0, package='D', user_type='PRE';
 
  DELETE FROM clientinfo WHERE units='155618918';
 
  There are no other type of queries.
 
  We're running this DB on a Sun-Fire V240. 2xUIIIi 1.5ghz with 2GB of
 RAM.
 
  We also run some 

Re: Performance problems on MySQL

2010-09-06 Thread Alexandre Vieira
Hi List,

In a 20m interval in our max load I have:

OS WAIT ARRAY INFO: reservation count 637, signal count 625
Mutex spin waits 0, rounds 19457, OS waits 428
RW-shared spins 238, OS waits 119; RW-excl spins 13, OS waits 8

(The values are the difference between the start and end of this 20m
interval)

The machine has 2 CPU's and usually has 40-50% of idle CPU.

Our workload consists on lots of parallel simple queries (SELECTs and
UPDATEs with a simple condition on the PK) on a 500k record/40MB table with
an INDEX on the PK.

| innodb_sync_spin_loops  | 20 |
| innodb_thread_concurrency   | 16 |
| innodb_thread_sleep_delay   | 1  |

I've been sampling my innodb status and there are always 16 queries inside
InnoDB and some 20-30 in queue. Therefore lowering thread_sleep_delay won't
help.

Since I have 47 spin rounds per OS Wait, would innodb gain something with
rising sync_spin_loops a little bit?

Also, should I be capping thread_concurrency with a 2 CPU machine?

Unfortunately this machine only has 2 RAID1 disks. I can't spread the disk
load (datafile/logfiles) between disks.

extended device statistics
r/sw/s   kr/s   kw/s wait actv wsvc_t asvc_t  %w  %b device
0.0   83.70.0  379.3  0.0  1.00.1   11.5   1  94 d2 (/var)

Usually the iostat busy indicator is near 100%.

Any hints on something I could tune to have less OS Waits and help with
the Disk I/O?

=
100906 18:33:40 INNODB MONITOR OUTPUT
=
Per second averages calculated from the last 47 seconds
--
SEMAPHORES
--
OS WAIT ARRAY INFO: reservation count 266140, signal count 259267
Mutex spin waits 0, rounds 7407879, OS waits 179189
RW-shared spins 93878, OS waits 46196; RW-excl spins 9473, OS waits 7311

---
LOG
---
Log sequence number 62 2833945222
Log flushed up to   62 2833944847
Last checkpoint at  62 2828803314
1 pending log writes, 0 pending chkp writes
18419416 log i/o's done, 37.64 log i/o's/second

--
ROW OPERATIONS
--
16 queries inside InnoDB, 27 queries in queue
1 read views open inside InnoDB
Main thread id 11, state: sleeping
Number of rows inserted 603196, updated 9006533, deleted 111028, read
30145300
0.17 inserts/s, 18.49 updates/s, 0.00 deletes/s, 41.47 reads/s

If nothing else can be done I'll advise the client to acquire new HW for
this BD.

By the way, upgrading from 5.0.45-log to 5.1.50 would make a huge difference
in terms of performance?

BR
AJ

On Mon, Sep 6, 2010 at 10:46 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 We're chaning it to INT(9). Apparently someone remembered to change the
 type of data in this field from an alphanumeric value to an INT(9).

 I'm going to change this asap.

 Thanks

 BR
 AJ


 On Mon, Sep 6, 2010 at 5:17 AM, mos mo...@fastmail.fm wrote:

 At 04:44 AM 9/3/2010, Alexandre Vieira wrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key |
 key_len
 | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY | 23
 | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ


 Alexandre,
 Do you have UserId declared as CHAR? It looks numeric to me. If it is
 stored as an integer then don't use the ' ' in the select statement
 otherwise it needs to convert it.
 If UserId values are integers and you have the column defined as CHAR,
 then declare the column UserId as integer or BigInt and the searches should
 be faster than searching on CHAR.

 Mike




  On Thu, Sep 2, 2010 at 8:52 PM, Johnny Withers joh...@pixelated.net
 wrote:

  What about an explain of this query:
 
 
  SELECT * FROM clientinfo WHERE userid='182106617';
 
  -JW
 
 
  On Thu, Sep 2, 2010 at 9:35 AM, Alexandre Vieira nul...@gmail.com
 wrote:
 
  John, Johnny,
 
  Thanks for the prompt answer.
 
  mysql SHOW CREATE TABLE clientinfo;
 
 
 ++--+
  | Table  | Create
  Table
  |
 
 
 

Re: Performance problems on MySQL

2010-09-05 Thread Shawn Green (MySQL)

On 9/3/2010 3:15 PM, Johnny Withers wrote:

It seems that when your index is PRIMARY on InnoDB tables, it's magic and is
part of the data thereby it is not included in the index_length field.

I have never noticed this. I don't think adding a new index will make a
difference.

You could try moving your log files to a different disk array than where
your data is. If you have binary and query logging enabled, it's probably a
good idea.

Johnny is correct. The PRIMARY KEY to an InnoDB table is indeed part of 
the data:


http://dev.mysql.com/doc/refman/5.1/en/innodb-index-types.html

That explains why there is no length to this index.

--
Shawn Green
MySQL Principal Technical Support Engineer
Oracle USA, Inc.
Office: Blountville, TN

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org



Re: Performance problems on MySQL

2010-09-05 Thread mos

At 04:44 AM 9/3/2010, Alexandre Vieira wrote:

Hi Johnny,

mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';
++-++---+---+-+-+---+--+---+
| id | select_type | table  | type  | possible_keys | key | key_len
| ref   | rows | Extra |
++-++---+---+-+-+---+--+---+
|  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY | 23
| const |1 |   |
++-++---+---+-+-+---+--+---+
1 row in set (0.53 sec)

Thanks

BR
AJ


Alexandre,
 Do you have UserId declared as CHAR? It looks numeric to me. If it is 
stored as an integer then don't use the ' ' in the select statement 
otherwise it needs to convert it.
If UserId values are integers and you have the column defined as CHAR, then 
declare the column UserId as integer or BigInt and the searches should be 
faster than searching on CHAR.


Mike




On Thu, Sep 2, 2010 at 8:52 PM, Johnny Withers joh...@pixelated.net wrote:

 What about an explain of this query:


 SELECT * FROM clientinfo WHERE userid='182106617';

 -JW


 On Thu, Sep 2, 2010 at 9:35 AM, Alexandre Vieira nul...@gmail.com wrote:

 John, Johnny,

 Thanks for the prompt answer.

 mysql SHOW CREATE TABLE clientinfo;

 
++--+

 | Table  | Create
 Table
 |

 
++--+

 | clientinfo | CREATE TABLE `clientinfo` (
   `userid` varchar(21) NOT NULL default '',
   `units` float default NULL,
   `date_last_query` datetime default NULL,
   `last_acc` int(10) unsigned default NULL,
   `date_last_units` datetime default NULL,
   `notification` int(10) unsigned NOT NULL default '0',
   `package` char(1) default NULL,
   `user_type` varchar(5) default NULL,
   PRIMARY KEY  (`userid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

 
++--+

 1 row in set (0.00 sec)
 mysql SHOW INDEX FROM clientinfo;

 
+++--+--+-+---+-+--++--++-+

 | Table  | Non_unique | Key_name | Seq_in_index | Column_name |
 Collation | Cardinality | Sub_part | Packed | Null | Index_type | 
Comment |


 
+++--+--+-+---+-+--++--++-+

 | clientinfo |  0 | PRIMARY  |1 | userid  |
 A |  460056 | NULL | NULL   |  | 
BTREE  | |


 
+++--+--+-+---+-+--++--++-+

 1 row in set (0.00 sec)


 SELECT * FROM clientinfo WHERE userid='182106617';

 UPDATE clientinfo SET
 
units=0.0,date_last_query=now(),user_type='POS',last_acc=167,date_last_units=now(),notification=0

 WHERE userid='152633876';

 INSERT INTO clientinfo VALUES
 ('171918726',101.0,now(),1,now(),0,'D','PRE') ON DUPLICATE KEY UPDATE
 units=101.0, date_last_query=now(), last_acc=1, date_last_units=now(),
 notification=0, package='D', user_type='PRE';

 DELETE FROM clientinfo WHERE units='155618918';

 There are no other type of queries.

 We're running this DB on a Sun-Fire V240. 2xUIIIi 1.5ghz with 2GB of RAM.

 We also run some other applications in the server, but nothing that
 consumes all the CPU/Memory. The machine has almost 1GB of free memory and
 50% of idle CPU time at any time.

 TIA

 BR
 Alex


 --
 Alexandre Vieira - nul...@gmail.com




 --
 -
 Johnny Withers
 601.209.4985
 joh...@pixelated.net




--
Alexandre 

Re: Performance problems on MySQL

2010-09-03 Thread Alexandre Vieira
Hi Johnny,

mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';
++-++---+---+-+-+---+--+---+
| id | select_type | table  | type  | possible_keys | key | key_len
| ref   | rows | Extra |
++-++---+---+-+-+---+--+---+
|  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY | 23
| const |1 |   |
++-++---+---+-+-+---+--+---+
1 row in set (0.53 sec)

Thanks

BR
AJ

On Thu, Sep 2, 2010 at 8:52 PM, Johnny Withers joh...@pixelated.net wrote:

 What about an explain of this query:


 SELECT * FROM clientinfo WHERE userid='182106617';

 -JW


 On Thu, Sep 2, 2010 at 9:35 AM, Alexandre Vieira nul...@gmail.com wrote:

 John, Johnny,

 Thanks for the prompt answer.

 mysql SHOW CREATE TABLE clientinfo;

 ++--+
 | Table  | Create
 Table
 |

 ++--+
 | clientinfo | CREATE TABLE `clientinfo` (
   `userid` varchar(21) NOT NULL default '',
   `units` float default NULL,
   `date_last_query` datetime default NULL,
   `last_acc` int(10) unsigned default NULL,
   `date_last_units` datetime default NULL,
   `notification` int(10) unsigned NOT NULL default '0',
   `package` char(1) default NULL,
   `user_type` varchar(5) default NULL,
   PRIMARY KEY  (`userid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

 ++--+
 1 row in set (0.00 sec)
 mysql SHOW INDEX FROM clientinfo;

 +++--+--+-+---+-+--++--++-+
 | Table  | Non_unique | Key_name | Seq_in_index | Column_name |
 Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

 +++--+--+-+---+-+--++--++-+
 | clientinfo |  0 | PRIMARY  |1 | userid  |
 A |  460056 | NULL | NULL   |  | BTREE  | |

 +++--+--+-+---+-+--++--++-+
 1 row in set (0.00 sec)


 SELECT * FROM clientinfo WHERE userid='182106617';

 UPDATE clientinfo SET
 units=0.0,date_last_query=now(),user_type='POS',last_acc=167,date_last_units=now(),notification=0
 WHERE userid='152633876';

 INSERT INTO clientinfo VALUES
 ('171918726',101.0,now(),1,now(),0,'D','PRE') ON DUPLICATE KEY UPDATE
 units=101.0, date_last_query=now(), last_acc=1, date_last_units=now(),
 notification=0, package='D', user_type='PRE';

 DELETE FROM clientinfo WHERE units='155618918';

 There are no other type of queries.

 We're running this DB on a Sun-Fire V240. 2xUIIIi 1.5ghz with 2GB of RAM.

 We also run some other applications in the server, but nothing that
 consumes all the CPU/Memory. The machine has almost 1GB of free memory and
 50% of idle CPU time at any time.

 TIA

 BR
 Alex


 --
 Alexandre Vieira - nul...@gmail.com




 --
 -
 Johnny Withers
 601.209.4985
 joh...@pixelated.net




-- 
Alexandre Vieira - nul...@gmail.com


Re: Performance problems on MySQL

2010-09-03 Thread Jangita

On 02/09/2010 6:05 p, Alexandre Vieira wrote:

Hi Jangita,

I'm 15779 innodb_buffer_pool_pages_free from a total of 22400. That's
246MB of 350MB free.

| Innodb_buffer_pool_pages_data | 6020   |
| Innodb_buffer_pool_pages_dirty| 1837   |
| Innodb_buffer_pool_pages_flushed  | 673837 |
| Innodb_buffer_pool_pages_free | 15779  |
| Innodb_buffer_pool_pages_latched  | 0  |
| Innodb_buffer_pool_pages_misc | 601|
| Innodb_buffer_pool_pages_total| 22400  |
| Innodb_buffer_pool_read_ahead_rnd | 1  |
| Innodb_buffer_pool_read_ahead_seq | 0  |
| Innodb_buffer_pool_read_requests  | 48471963   |
| Innodb_buffer_pool_reads  | 3497   |
| Innodb_buffer_pool_wait_free  | 0  |
| Innodb_buffer_pool_write_requests | 21700478   |

Why would I need to increase?

Thanks

BR
AJ
I'm guessing (just a guess) that you have alot free buffer_pool_size 
because mysql doesn't use it because it cannot fit information into it 
at one go so doesn't use it at all? Try and up it; if it doesn't work 
you could always set it back.


--
Jangita | +256 76 91 8383 | Y!  MSN: jang...@yahoo.com
Skype: jangita | GTalk: jangita.nyag...@gmail.com

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org



Re: Performance problems on MySQL

2010-09-03 Thread Johnny Withers
Ok, so I'm stumped?

What kind of hardware is behind this thing?

-JW

On Fri, Sep 3, 2010 at 4:44 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key | key_len
 | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY | 23
 | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ





Re: Performance problems on MySQL

2010-09-03 Thread Alexandre Vieira
Hi,

I've done some tests with INT(8) vs the VARCHAR(23) on the userid PK and it
makes a little difference but not enough for the application to run in real
time processing.

It's a Sun Fire V240 2x 1.5ghz UltraSparc IIIi with 2GB of RAM.

MySQL is eating 179MB of RAM and 5,4% of CPU.

  PID USERNAME  SIZE   RSS STATE  PRI NICE  TIME  CPU PROCESS/NLWP
  6229 mysql 455M  179M sleep   580   0:03.11 5,4% mysqld/68

The machine has ~1GB of free memory. MySQL and InnoDB has free pages to grow
and we have ~50% of free CPU time.

Currently I can't use the replication server since the application running
on top if this BD can only talk to 1 data source.
At the moment it's also not possible to change the application in order to
make it use the DB more wisely.

Basically we have a table with lots of selects, lots of update, lots of
inserts and deletes. Data manipulation is random, doesn't follow any
specific pattern. All working concurrently.

A big bottleneck is:

8 queries inside InnoDB, 28 queries in queue
1 read views open inside InnoDB

Increasing innodb_thread_concurrency might help without causing any problems
to the overall performance.

Makes total sense if you read:
http://peter-zaitsev.livejournal.com/9138.html

Thanks in advance.

BR
AJ

On Fri, Sep 3, 2010 at 2:31 PM, Johnny Withers joh...@pixelated.net wrote:

 Ok, so I'm stumped?

 What kind of hardware is behind this thing?

 -JW

 On Fri, Sep 3, 2010 at 4:44 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key |
 key_len | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY |
 23  | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ





-- 
Alexandre Vieira - nul...@gmail.com


Re: Performance problems on MySQL

2010-09-03 Thread Johnny Withers
What does

SHOW TABLE STATUS LIKE 'table_name'

Say about this table?

-JW

On Fri, Sep 3, 2010 at 8:59 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 I've done some tests with INT(8) vs the VARCHAR(23) on the userid PK and it
 makes a little difference but not enough for the application to run in real
 time processing.

 It's a Sun Fire V240 2x 1.5ghz UltraSparc IIIi with 2GB of RAM.

 MySQL is eating 179MB of RAM and 5,4% of CPU.

   PID USERNAME  SIZE   RSS STATE  PRI NICE  TIME  CPU PROCESS/NLWP
   6229 mysql 455M  179M sleep   580   0:03.11 5,4% mysqld/68

 The machine has ~1GB of free memory. MySQL and InnoDB has free pages to
 grow and we have ~50% of free CPU time.

 Currently I can't use the replication server since the application running
 on top if this BD can only talk to 1 data source.
 At the moment it's also not possible to change the application in order to
 make it use the DB more wisely.

 Basically we have a table with lots of selects, lots of update, lots of
 inserts and deletes. Data manipulation is random, doesn't follow any
 specific pattern. All working concurrently.

 A big bottleneck is:

 8 queries inside InnoDB, 28 queries in queue

 1 read views open inside InnoDB

 Increasing innodb_thread_concurrency might help without causing any
 problems to the overall performance.

 Makes total sense if you read:
 http://peter-zaitsev.livejournal.com/9138.html

 Thanks in advance.

 BR
 AJ


 On Fri, Sep 3, 2010 at 2:31 PM, Johnny Withers joh...@pixelated.netwrote:

 Ok, so I'm stumped?

 What kind of hardware is behind this thing?

 -JW

 On Fri, Sep 3, 2010 at 4:44 AM, Alexandre Vieira nul...@gmail.comwrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key |
 key_len | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY |
 23  | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ





 --
 Alexandre Vieira - nul...@gmail.com




-- 
-
Johnny Withers
601.209.4985
joh...@pixelated.net


Re: Performance problems on MySQL

2010-09-03 Thread Alexandre Vieira
Hi,

mysql SHOW TABLE STATUS LIKE 'clientinfo';
+++-++++-+-+--+---++-+-++---+--+++
| Name   | Engine | Version | Row_format | Rows   | Avg_row_length |
Data_length | Max_data_length | Index_length | Data_free | Auto_increment |
Create_time | Update_time | Check_time | Collation |
Checksum | Create_options | Comment|
+++-++++-+-+--+---++-+-++---+--+++
| clientinfo | InnoDB |  10 | Compact| 504762 | 82 |
41500672 |   0 |0 | 0 |   NULL |
2010-09-01 03:21:36 | NULL| NULL   | latin1_swedish_ci |
NULL || InnoDB free: 276480 kB |
+++-++++-+-+--+---++-+-++---+--+++
1 row in set (0.02 sec)

BR
AJ

On Fri, Sep 3, 2010 at 3:18 PM, Johnny Withers joh...@pixelated.net wrote:

 What does

 SHOW TABLE STATUS LIKE 'table_name'

 Say about this table?

 -JW


 On Fri, Sep 3, 2010 at 8:59 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 I've done some tests with INT(8) vs the VARCHAR(23) on the userid PK and
 it makes a little difference but not enough for the application to run in
 real time processing.

 It's a Sun Fire V240 2x 1.5ghz UltraSparc IIIi with 2GB of RAM.

 MySQL is eating 179MB of RAM and 5,4% of CPU.

   PID USERNAME  SIZE   RSS STATE  PRI NICE  TIME  CPU PROCESS/NLWP
   6229 mysql 455M  179M sleep   580   0:03.11 5,4% mysqld/68

 The machine has ~1GB of free memory. MySQL and InnoDB has free pages to
 grow and we have ~50% of free CPU time.

 Currently I can't use the replication server since the application running
 on top if this BD can only talk to 1 data source.
 At the moment it's also not possible to change the application in order to
 make it use the DB more wisely.

 Basically we have a table with lots of selects, lots of update, lots of
 inserts and deletes. Data manipulation is random, doesn't follow any
 specific pattern. All working concurrently.

 A big bottleneck is:

 8 queries inside InnoDB, 28 queries in queue

 1 read views open inside InnoDB

 Increasing innodb_thread_concurrency might help without causing any
 problems to the overall performance.

 Makes total sense if you read:
 http://peter-zaitsev.livejournal.com/9138.html

 Thanks in advance.

 BR
 AJ


 On Fri, Sep 3, 2010 at 2:31 PM, Johnny Withers joh...@pixelated.netwrote:

 Ok, so I'm stumped?

 What kind of hardware is behind this thing?

 -JW

 On Fri, Sep 3, 2010 at 4:44 AM, Alexandre Vieira nul...@gmail.comwrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key |
 key_len | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY |
 23  | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ





 --
 Alexandre Vieira - nul...@gmail.com




 --
 -
 Johnny Withers
 601.209.4985
 joh...@pixelated.net




-- 
Alexandre Vieira - nul...@gmail.com


Re: Performance problems on MySQL

2010-09-03 Thread Johnny Withers
Very confusing...

Why is index_length zero ?

On top of that, there's only 500K rows in the table with a data size of
41MB. Maybe InnoDB is flushing to disk too often?

What's the output of iostat -dxk 60 ? (run for a minute+ to get 2 output
girds)



  --

*Johnny Withers*
jwith...@ecashsoftware.com
601.919.2275 x112
 [image: eCash Software Systems]


On Fri, Sep 3, 2010 at 9:20 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 mysql SHOW TABLE STATUS LIKE 'clientinfo';

 +++-++++-+-+--+---++-+-++---+--+++
 | Name   | Engine | Version | Row_format | Rows   | Avg_row_length |
 Data_length | Max_data_length | Index_length | Data_free | Auto_increment |
 Create_time | Update_time | Check_time | Collation |
 Checksum | Create_options | Comment|

 +++-++++-+-+--+---++-+-++---+--+++
 | clientinfo | InnoDB |  10 | Compact| 504762 | 82 |
 41500672 |   0 |0 | 0 |   NULL |
 2010-09-01 03:21:36 | NULL| NULL   | latin1_swedish_ci |
 NULL || InnoDB free: 276480 kB |

 +++-++++-+-+--+---++-+-++---+--+++
 1 row in set (0.02 sec)

 BR
 AJ


 On Fri, Sep 3, 2010 at 3:18 PM, Johnny Withers joh...@pixelated.netwrote:

 What does

 SHOW TABLE STATUS LIKE 'table_name'

 Say about this table?

 -JW


 On Fri, Sep 3, 2010 at 8:59 AM, Alexandre Vieira nul...@gmail.comwrote:

 Hi,

 I've done some tests with INT(8) vs the VARCHAR(23) on the userid PK and
 it makes a little difference but not enough for the application to run in
 real time processing.

 It's a Sun Fire V240 2x 1.5ghz UltraSparc IIIi with 2GB of RAM.

 MySQL is eating 179MB of RAM and 5,4% of CPU.

   PID USERNAME  SIZE   RSS STATE  PRI NICE  TIME  CPU PROCESS/NLWP
   6229 mysql 455M  179M sleep   580   0:03.11 5,4% mysqld/68

 The machine has ~1GB of free memory. MySQL and InnoDB has free pages to
 grow and we have ~50% of free CPU time.

 Currently I can't use the replication server since the application
 running on top if this BD can only talk to 1 data source.
 At the moment it's also not possible to change the application in order
 to make it use the DB more wisely.

 Basically we have a table with lots of selects, lots of update, lots of
 inserts and deletes. Data manipulation is random, doesn't follow any
 specific pattern. All working concurrently.

 A big bottleneck is:

 8 queries inside InnoDB, 28 queries in queue

 1 read views open inside InnoDB

 Increasing innodb_thread_concurrency might help without causing any
 problems to the overall performance.

 Makes total sense if you read:
 http://peter-zaitsev.livejournal.com/9138.html

 Thanks in advance.

 BR
 AJ


 On Fri, Sep 3, 2010 at 2:31 PM, Johnny Withers joh...@pixelated.netwrote:

 Ok, so I'm stumped?

 What kind of hardware is behind this thing?

 -JW

 On Fri, Sep 3, 2010 at 4:44 AM, Alexandre Vieira nul...@gmail.comwrote:

 Hi Johnny,

 mysql EXPLAIN SELECT * FROM clientinfo WHERE userid='911930694';

 ++-++---+---+-+-+---+--+---+
 | id | select_type | table  | type  | possible_keys | key |
 key_len | ref   | rows | Extra |

 ++-++---+---+-+-+---+--+---+
 |  1 | SIMPLE  | clientinfo | const | PRIMARY   | PRIMARY |
 23  | const |1 |   |

 ++-++---+---+-+-+---+--+---+
 1 row in set (0.53 sec)

 Thanks

 BR
 AJ





 --
 Alexandre Vieira - nul...@gmail.com




 --
 -
 Johnny Withers
 601.209.4985
 joh...@pixelated.net




 --
 Alexandre Vieira - nul...@gmail.com




-- 
-
Johnny Withers
601.209.4985
joh...@pixelated.net


Re: Performance problems on MySQL

2010-09-03 Thread Alexandre Vieira
Hi,

The DB is working on /var, which is md2 / md12 / md22.

  extended device statistics
device   r/sw/s   kr/s   kw/s wait actv  svc_t  %w  %b

md2  0.1   80.00.4  471.4  0.0  1.0   12.2   0  94
md10 0.05.70.0   78.8  0.0  0.1   19.7   0   9
md11 0.00.00.00.0  0.0  0.00.0   0   0
md12 0.0   80.00.3  471.4  0.0  0.89.9   0  76
md20 0.05.70.0   78.8  0.0  0.1   21.1   0   9
md21 0.00.00.00.0  0.0  0.00.0   0   0
md22 0.0   80.00.1  471.3  0.0  0.8   10.6   0  81
sd0  0.2   86.80.3  550.5  0.0  0.9   10.6   0  78
sd1  0.2   86.80.2  550.4  0.0  1.0   11.3   0  83
sd30 0.00.00.00.0  0.0  0.00.0   0   0
nfs1 0.00.00.00.0  0.0  0.00.0   0   0
  extended device statistics
device   r/sw/s   kr/s   kw/s wait actv  svc_t  %w  %b
md0  0.05.60.0   83.2  0.0  0.2   28.0   0  10
md1  0.00.00.00.0  0.0  0.00.0   0   0
md2  0.1   84.20.7  527.2  0.0  1.0   11.8   0  93
md10 0.05.60.0   83.2  0.0  0.1   19.0   0   8
md11 0.00.00.00.0  0.0  0.00.0   0   0
md12 0.0   84.20.3  527.2  0.0  0.89.7   0  77
md20 0.05.60.0   83.2  0.0  0.1   19.9   0   8
md21 0.00.00.00.0  0.0  0.00.0   0   0
md22 0.0   84.10.4  527.2  0.0  0.9   10.3   0  82
sd0  0.2   91.10.3  610.7  0.0  0.9   10.4   0  79
sd1  0.2   91.00.4  610.7  0.0  1.0   11.0   0  84
sd30 0.00.00.00.0  0.0  0.00.0   0   0
nfs1 0.00.00.00.0  0.0  0.00.0   0   0

I really can't say why Index_Lenght is 0... It might be something with the
index?

mysql SHOW INDEX FROM clientinfo;
+++--+--+-+---+-+--++--++-+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+++--+--+-+---+-+--++--++-+
| clientinfo |  0 | PRIMARY  |1 | userid  |
A |  503836 | NULL | NULL   |  | BTREE  | |
+++--+--+-+---+-+--++--++-+
1 row in set (0.00 sec)

mysql SHOW TABLE STATUS LIKE 'clientinfo';
+++-++++-+-+--+---++-+-++---+--+++
| Name   | Engine | Version | Row_format | Rows   | Avg_row_length |
Data_length | Max_data_length | Index_length | Data_free | Auto_increment |
Create_time | Update_time | Check_time | Collation |
Checksum | Create_options | Comment|
+++-++++-+-+--+---++-+-++---+--+++
| clientinfo | InnoDB |  10 | Compact| 508170 | 81 |
41500672 |   0 |0 | 0 |   NULL |
2010-09-01 03:21:36 | NULL| NULL   | latin1_swedish_ci |
NULL || InnoDB free: 276480 kB |
+++-++++-+-+--+---++-+-++---+--+++
1 row in set (0.00 sec)

BR
AJ

On Fri, Sep 3, 2010 at 3:46 PM, Johnny Withers joh...@pixelated.net wrote:

 Very confusing...

 Why is index_length zero ?

 On top of that, there's only 500K rows in the table with a data size of
 41MB. Maybe InnoDB is flushing to disk too often?

 What's the output of iostat -dxk 60 ? (run for a minute+ to get 2 output
 girds)



   --

 *Johnny Withers*
 jwith...@ecashsoftware.com
 601.919.2275 x112
  [image: eCash Software Systems]


 On Fri, Sep 3, 2010 at 9:20 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 mysql SHOW TABLE STATUS LIKE 'clientinfo';

 +++-++++-+-+--+---++-+-++---+--+++
 | Name   | Engine | Version | Row_format | Rows  

Re: Performance problems on MySQL

2010-09-03 Thread Johnny Withers
I think your MySQL instance is disk bound.

If you look at your iostats, md2, 12 and 22 have a ~10ms wait time before a
request can be processed. iostat is also reporting those disks are 75%+
utilized which means they are doing about all they can do.

Anyway you can add more disks? Add faster disks?

I'm not an iostat expert, use my research and recommendations with caution
=)


  --

*Johnny Withers*
jwith...@ecashsoftware.com
601.919.2275 x112
 [image: eCash Software Systems]


On Fri, Sep 3, 2010 at 10:37 AM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 The DB is working on /var, which is md2 / md12 / md22.

   extended device statistics
 device   r/sw/s   kr/s   kw/s wait actv  svc_t  %w  %b

 md2  0.1   80.00.4  471.4  0.0  1.0   12.2   0  94
 md10 0.05.70.0   78.8  0.0  0.1   19.7   0   9
 md11 0.00.00.00.0  0.0  0.00.0   0   0
 md12 0.0   80.00.3  471.4  0.0  0.89.9   0  76
 md20 0.05.70.0   78.8  0.0  0.1   21.1   0   9
 md21 0.00.00.00.0  0.0  0.00.0   0   0
 md22 0.0   80.00.1  471.3  0.0  0.8   10.6   0  81
 sd0  0.2   86.80.3  550.5  0.0  0.9   10.6   0  78
 sd1  0.2   86.80.2  550.4  0.0  1.0   11.3   0  83
 sd30 0.00.00.00.0  0.0  0.00.0   0   0
 nfs1 0.00.00.00.0  0.0  0.00.0   0   0
   extended device statistics
 device   r/sw/s   kr/s   kw/s wait actv  svc_t  %w  %b
 md0  0.05.60.0   83.2  0.0  0.2   28.0   0  10
 md1  0.00.00.00.0  0.0  0.00.0   0   0
 md2  0.1   84.20.7  527.2  0.0  1.0   11.8   0  93
 md10 0.05.60.0   83.2  0.0  0.1   19.0   0   8
 md11 0.00.00.00.0  0.0  0.00.0   0   0
 md12 0.0   84.20.3  527.2  0.0  0.89.7   0  77
 md20 0.05.60.0   83.2  0.0  0.1   19.9   0   8
 md21 0.00.00.00.0  0.0  0.00.0   0   0
 md22 0.0   84.10.4  527.2  0.0  0.9   10.3   0  82
 sd0  0.2   91.10.3  610.7  0.0  0.9   10.4   0  79
 sd1  0.2   91.00.4  610.7  0.0  1.0   11.0   0  84
 sd30 0.00.00.00.0  0.0  0.00.0   0   0
 nfs1 0.00.00.00.0  0.0  0.00.0   0   0

 I really can't say why Index_Lenght is 0... It might be something with the
 index?


 mysql SHOW INDEX FROM clientinfo;

 +++--+--+-+---+-+--++--++-+
 | Table  | Non_unique | Key_name | Seq_in_index | Column_name |
 Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

 +++--+--+-+---+-+--++--++-+
 | clientinfo |  0 | PRIMARY  |1 | userid  |
 A |  503836 | NULL | NULL   |  | BTREE  | |

 +++--+--+-+---+-+--++--++-+
 1 row in set (0.00 sec)


 mysql SHOW TABLE STATUS LIKE 'clientinfo';

 +++-++++-+-+--+---++-+-++---+--+++
 | Name   | Engine | Version | Row_format | Rows   | Avg_row_length |
 Data_length | Max_data_length | Index_length | Data_free | Auto_increment |
 Create_time | Update_time | Check_time | Collation |
 Checksum | Create_options | Comment|

 +++-++++-+-+--+---++-+-++---+--+++
 | clientinfo | InnoDB |  10 | Compact| 508170 | 81 |
 41500672 |   0 |0 | 0 |   NULL |
 2010-09-01 03:21:36 | NULL| NULL   | latin1_swedish_ci |
 NULL || InnoDB free: 276480 kB |

 +++-++++-+-+--+---++-+-++---+--+++
 1 row in set (0.00 sec)

 BR
 AJ


 On Fri, Sep 3, 2010 at 3:46 PM, Johnny Withers joh...@pixelated.netwrote:

 Very confusing...

 Why is index_length zero ?

 On top of that, there's only 500K rows in the table with a data size of
 41MB. Maybe InnoDB is flushing to disk too often?

 What's the output 

Re: Performance problems on MySQL

2010-09-03 Thread Alexandre Vieira
Hi,

When creating a table in MySQL with a PK it automatically creates an INDEX,
correct?

The Index_Length: 0 is rather strange..I've created a new INDEX on top of my
PK column on my test system and Index_Length shows a big value different
from 0. Do you think this might have any impact?

mysql show index from gwtraffic.clientinfo;
++++--+-+---+-+--++--++-+
| Table  | Non_unique | Key_name   | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
++++--+-+---+-+--++--++-+
| clientinfo |  0 | PRIMARY|1 | userid  |
A |  548216 | NULL | NULL   |  | BTREE  | |
| clientinfo |  1 | userid_idx |1 | userid  |
A |  548216 | NULL | NULL   |  | BTREE  | |
++++--+-+---+-+--++--++-+
2 rows in set (0.01 sec)

mysql show table status LIKE 'clientinfo';
+++-++++-+-+--+---++-+-++---+--++-+
| Name   | Engine | Version | Row_format | Rows   | Avg_row_length |
Data_length | Max_data_length | Index_length | Data_free | Auto_increment |
Create_time | Update_time | Check_time | Collation |
Checksum | Create_options | Comment |
+++-++++-+-+--+---++-+-++---+--++-+
| clientinfo | InnoDB |  10 | Compact| 548216 | 62 |
34144256 |   0 |  5783552 | 0 |   NULL |
2010-09-03 17:38:16 | NULL| NULL   | latin1_swedish_ci |
NULL || InnoDB free: 1214464 kB |
+++-++++-+-+--+---++-+-++---+--++-+
1 row in set (0.00 sec)

I'm trying to stress my test DB but can't measure any different results with
or without the second INDEX.

Regarding the disks.. the DB is updated 20+ times every second. Writing the
log, checkpoint to disk, etc.. can cause that much load?

BR
AJ

On Fri, Sep 3, 2010 at 4:54 PM, Johnny Withers joh...@pixelated.net wrote:

 I think your MySQL instance is disk bound.

 If you look at your iostats, md2, 12 and 22 have a ~10ms wait time before a
 request can be processed. iostat is also reporting those disks are 75%+
 utilized which means they are doing about all they can do.

 Anyway you can add more disks? Add faster disks?

 I'm not an iostat expert, use my research and recommendations with caution
 =)


   --

 *Johnny Withers*
 jwith...@ecashsoftware.com
 601.919.2275 x112
  [image: eCash Software Systems]


 On Fri, Sep 3, 2010 at 10:37 AM, Alexandre Vieira nul...@gmail.comwrote:

 Hi,

 The DB is working on /var, which is md2 / md12 / md22.

   extended device statistics
 device   r/sw/s   kr/s   kw/s wait actv  svc_t  %w  %b

 md2  0.1   80.00.4  471.4  0.0  1.0   12.2   0  94
 md10 0.05.70.0   78.8  0.0  0.1   19.7   0   9
 md11 0.00.00.00.0  0.0  0.00.0   0   0
 md12 0.0   80.00.3  471.4  0.0  0.89.9   0  76
 md20 0.05.70.0   78.8  0.0  0.1   21.1   0   9
 md21 0.00.00.00.0  0.0  0.00.0   0   0
 md22 0.0   80.00.1  471.3  0.0  0.8   10.6   0  81
 sd0  0.2   86.80.3  550.5  0.0  0.9   10.6   0  78
 sd1  0.2   86.80.2  550.4  0.0  1.0   11.3   0  83
 sd30 0.00.00.00.0  0.0  0.00.0   0   0
 nfs1 0.00.00.00.0  0.0  0.00.0   0   0
   extended device statistics
 device   r/sw/s   kr/s   kw/s wait actv  svc_t  %w  %b
 md0  0.05.60.0   83.2  0.0  0.2   28.0   0  10
 md1  0.00.00.00.0  0.0  0.00.0   0   0
 md2  0.1   84.20.7  527.2  0.0  1.0   11.8   0  93
 md10 0.05.60.0   83.2  0.0  0.1   19.0   0   8
 md11 0.00.00.00.0  0.0  0.00.0   0   0
 md12 0.0   84.20.3  527.2  0.0  0.89.7   0  77
 md20 0.05.60.0   83.2  0.0  

Re: Performance problems on MySQL

2010-09-03 Thread Johnny Withers
It seems that when your index is PRIMARY on InnoDB tables, it's magic and is
part of the data thereby it is not included in the index_length field.

I have never noticed this. I don't think adding a new index will make a
difference.

You could try moving your log files to a different disk array than where
your data is. If you have binary and query logging enabled, it's probably a
good idea.



  --

*Johnny Withers*
jwith...@ecashsoftware.com
601.919.2275 x112
 [image: eCash Software Systems]


On Fri, Sep 3, 2010 at 12:45 PM, Alexandre Vieira nul...@gmail.com wrote:

 Hi,

 When creating a table in MySQL with a PK it automatically creates an INDEX,
 correct?

 The Index_Length: 0 is rather strange..I've created a new INDEX on top of
 my PK column on my test system and Index_Length shows a big value different
 from 0. Do you think this might have any impact?

 mysql show index from gwtraffic.clientinfo;


 ++++--+-+---+-+--++--++-+
 | Table  | Non_unique | Key_name   | Seq_in_index | Column_name |
 Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

 ++++--+-+---+-+--++--++-+
 | clientinfo |  0 | PRIMARY|1 | userid  |
 A |  548216 | NULL | NULL   |  | BTREE  | |
 | clientinfo |  1 | userid_idx |1 | userid  |
 A |  548216 | NULL | NULL   |  | BTREE  | |

 ++++--+-+---+-+--++--++-+

 2 rows in set (0.01 sec)

 mysql show table status LIKE 'clientinfo';


 +++-++++-+-+--+---++-+-++---+--++-+
 | Name   | Engine | Version | Row_format | Rows   | Avg_row_length |
 Data_length | Max_data_length | Index_length | Data_free | Auto_increment |
 Create_time | Update_time | Check_time | Collation |
 Checksum | Create_options | Comment |

 +++-++++-+-+--+---++-+-++---+--++-+
 | clientinfo | InnoDB |  10 | Compact| 548216 | 62 |
 34144256 |   0 |  5783552 | 0 |   NULL |
 2010-09-03 17:38:16 | NULL| NULL   | latin1_swedish_ci |
 NULL || InnoDB free: 1214464 kB |


 +++-++++-+-+--+---++-+-++---+--++-+
 1 row in set (0.00 sec)

 I'm trying to stress my test DB but can't measure any different results
 with or without the second INDEX.

 Regarding the disks.. the DB is updated 20+ times every second. Writing the
 log, checkpoint to disk, etc.. can cause that much load?

 BR
 AJ





Re: Performance problems on MySQL

2010-09-02 Thread Johnny Withers
Can you show us the table structure and sample queries?

On Thursday, September 2, 2010, Alexandre Vieira nul...@gmail.com wrote:
 Hi list,

 I'm having some performance problems on my 5.0.45-log DB running on Solaris
 8 (V240).

 We only have one table and two apps selecting, updating, inserting and
 deleting massively and randomly from this table.

 The table is very simple. All SELECTs,INSERTs,UPDATEs and DELETEs have only
 one condition on an unique varchar indexed column.

 The table has 500k records and has been OPTIMIZED 32h ago.

 I've ran some sampling and:

 A SELECT costs between 400ms and 600ms.
 An UPDATE costs between 800ms and 1300ms.
 A DELETE costs between 900ms and 1300ms
 An INSERT costs always 900ms 2000ms.

 At any given time the DB is handling 60-80 operations every second. It does
 not scale any more than this because all the application connections to the
 DB are being used and waiting for the DB to move. Our application queues
 requests and it lags our clients.

 The perl mysqltuner only whines about Query cache disabled but since I get
 an ~20 updates every second I can't get any query cache hits, so I disabled
 it.

 If it makes any difference, we're replicating everything to another server
 that don't serve any queries.

 The DB has a 32 hour uptime.

 Any help is most welcome.

 You can find my.cnf, show status and show innodb status below.

 Kind regards
 Alex

 ###
 my.cnf:

 sql-mode                        =STRICT_ALL_TABLES
 old_passwords                   =1
 skip-bdb
 max_connections                 =100
 max_allowed_packet              =1M
 table_cache                     =512
 sort_buffer_size                =2M
 read_buffer_size                =4M
 read_rnd_buffer_size            =8M
 thread_cache_size               =16
 query_cache_limit               =32M
 thread_concurrency              =8
 max_heap_table_size             =28M
 tmp_table_size                  =12M
 innodb_buffer_pool_size         =350M
 innodb_additional_mem_pool_size =15M
 innodb_log_buffer_size          =6M
 innodb_flush_log_at_trx_commit  =1
 innodb_lock_wait_timeout        =50

 ###

 mysql show status where Value NOT LIKE 0;
 +---++
 | Variable_name                     | Value      |
 +---++
 | Aborted_clients                   | 88         |
 | Aborted_connects                  | 37590      |
 | Binlog_cache_use                  | 2148392    |
 | Bytes_received                    | 1117       |
 | Bytes_sent                        | 8772       |
 | Com_change_db                     | 1          |
 | Com_delete                        | 4          |
 | Com_insert                        | 3          |
 | Com_select                        | 2          |
 | Com_show_databases                | 1          |
 | Com_show_fields                   | 3          |
 | Com_show_status                   | 2          |
 | Com_show_tables                   | 1          |
 | Compression                       | OFF        |
 | Connections                       | 276096     |
 | Created_tmp_files                 | 5          |
 | Created_tmp_tables                | 4          |
 | Flush_commands                    | 1          |
 | Handler_commit                    | 14         |
 | Handler_prepare                   | 14         |
 | Handler_read_key                  | 8          |
 | Handler_read_rnd_next             | 263        |
 | Handler_write                     | 395        |
 | Innodb_buffer_pool_pages_data     | 6019       |
 | Innodb_buffer_pool_pages_dirty    | 1858       |
 | Innodb_buffer_pool_pages_flushed  | 593993     |
 | Innodb_buffer_pool_pages_free     | 15784      |
 | Innodb_buffer_pool_pages_misc     | 597        |
 | Innodb_buffer_pool_pages_total    | 22400      |
 | Innodb_buffer_pool_read_ahead_rnd | 1          |
 | Innodb_buffer_pool_read_requests  | 42797013   |
 | Innodb_buffer_pool_reads          | 3497       |
 | Innodb_buffer_pool_write_requests | 19096507   |
 | Innodb_data_fsyncs                | 4319683    |
 | Innodb_data_pending_fsyncs        | 1          |
 | Innodb_data_read                  | 60231680   |
 | Innodb_data_reads                 | 3514       |
 | Innodb_data_writes                | 4496721    |
 | Innodb_data_written               | 1259458560 |
 | Innodb_dblwr_pages_written        | 593993     |
 | Innodb_dblwr_writes               | 12967      |
 | Innodb_log_write_requests         | 2111208    |
 | Innodb_log_writes                 | 4285654    |
 | Innodb_os_log_fsyncs              | 4303114    |
 | Innodb_os_log_pending_fsyncs      | 1          |
 | Innodb_os_log_written             | 3264897024 |
 | Innodb_page_size                  | 16384      |
 | Innodb_pages_created              | 2476       |
 | Innodb_pages_read                 | 3543       |
 | Innodb_pages_written              | 593993     |
 | 

Re: Performance problems on MySQL

2010-09-02 Thread John Daisley
What is the hardware spec? Anything else running on the box?

Why are you replicating but not making use of the slave?

Can you post the output of SHOW CREATE TABLE?

Regards
John

On 2 September 2010 12:50, Alexandre Vieira nul...@gmail.com wrote:

 Hi list,

 I'm having some performance problems on my 5.0.45-log DB running on Solaris
 8 (V240).

 We only have one table and two apps selecting, updating, inserting and
 deleting massively and randomly from this table.

 The table is very simple. All SELECTs,INSERTs,UPDATEs and DELETEs have only
 one condition on an unique varchar indexed column.

 The table has 500k records and has been OPTIMIZED 32h ago.

 I've ran some sampling and:

 A SELECT costs between 400ms and 600ms.
 An UPDATE costs between 800ms and 1300ms.
 A DELETE costs between 900ms and 1300ms
 An INSERT costs always 900ms 2000ms.

 At any given time the DB is handling 60-80 operations every second. It does
 not scale any more than this because all the application connections to the
 DB are being used and waiting for the DB to move. Our application queues
 requests and it lags our clients.

 The perl mysqltuner only whines about Query cache disabled but since I
 get
 an ~20 updates every second I can't get any query cache hits, so I disabled
 it.

 If it makes any difference, we're replicating everything to another server
 that don't serve any queries.

 The DB has a 32 hour uptime.

 Any help is most welcome.

 You can find my.cnf, show status and show innodb status below.

 Kind regards
 Alex

 ###
 my.cnf:

 sql-mode=STRICT_ALL_TABLES
 old_passwords   =1
 skip-bdb
 max_connections =100
 max_allowed_packet  =1M
 table_cache =512
 sort_buffer_size=2M
 read_buffer_size=4M
 read_rnd_buffer_size=8M
 thread_cache_size   =16
 query_cache_limit   =32M
 thread_concurrency  =8
 max_heap_table_size =28M
 tmp_table_size  =12M
 innodb_buffer_pool_size =350M
 innodb_additional_mem_pool_size =15M
 innodb_log_buffer_size  =6M
 innodb_flush_log_at_trx_commit  =1
 innodb_lock_wait_timeout=50

 ###

 mysql show status where Value NOT LIKE 0;
 +---++
 | Variable_name | Value  |
 +---++
 | Aborted_clients   | 88 |
 | Aborted_connects  | 37590  |
 | Binlog_cache_use  | 2148392|
 | Bytes_received| 1117   |
 | Bytes_sent| 8772   |
 | Com_change_db | 1  |
 | Com_delete| 4  |
 | Com_insert| 3  |
 | Com_select| 2  |
 | Com_show_databases| 1  |
 | Com_show_fields   | 3  |
 | Com_show_status   | 2  |
 | Com_show_tables   | 1  |
 | Compression   | OFF|
 | Connections   | 276096 |
 | Created_tmp_files | 5  |
 | Created_tmp_tables| 4  |
 | Flush_commands| 1  |
 | Handler_commit| 14 |
 | Handler_prepare   | 14 |
 | Handler_read_key  | 8  |
 | Handler_read_rnd_next | 263|
 | Handler_write | 395|
 | Innodb_buffer_pool_pages_data | 6019   |
 | Innodb_buffer_pool_pages_dirty| 1858   |
 | Innodb_buffer_pool_pages_flushed  | 593993 |
 | Innodb_buffer_pool_pages_free | 15784  |
 | Innodb_buffer_pool_pages_misc | 597|
 | Innodb_buffer_pool_pages_total| 22400  |
 | Innodb_buffer_pool_read_ahead_rnd | 1  |
 | Innodb_buffer_pool_read_requests  | 42797013   |
 | Innodb_buffer_pool_reads  | 3497   |
 | Innodb_buffer_pool_write_requests | 19096507   |
 | Innodb_data_fsyncs| 4319683|
 | Innodb_data_pending_fsyncs| 1  |
 | Innodb_data_read  | 60231680   |
 | Innodb_data_reads | 3514   |
 | Innodb_data_writes| 4496721|
 | Innodb_data_written   | 1259458560 |
 | Innodb_dblwr_pages_written| 593993 |
 | Innodb_dblwr_writes   | 12967  |
 | Innodb_log_write_requests | 2111208|
 | Innodb_log_writes | 4285654|
 | Innodb_os_log_fsyncs  | 4303114|
 | Innodb_os_log_pending_fsyncs  | 1  |
 | Innodb_os_log_written | 3264897024 |
 | Innodb_page_size  | 16384  |
 | Innodb_pages_created  | 2476

Re: Performance problems on MySQL

2010-09-02 Thread Jangita

On 02/09/2010 4:46 p, Alexandre Vieira wrote:

John, Johnny,

Thanks for the prompt answer.


...

We also run some other applications in the server, but nothing that consumes
all the CPU/Memory. The machine has almost 1GB of free memory and 50% of
idle CPU time at any time.

TIA

BR
Alex


Increase innodb_buffer_pool_size say to 1GB?
--
Jangita | +256 76 91 8383 | Y!  MSN: jang...@yahoo.com
Skype: jangita | GTalk: jangita.nyag...@gmail.com

--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org



Re: Performance problems on MySQL

2010-09-02 Thread Alexandre Vieira
Hi Jangita,

I'm 15779 innodb_buffer_pool_pages_free from a total of 22400. That's 246MB
of 350MB free.

| Innodb_buffer_pool_pages_data | 6020   |
| Innodb_buffer_pool_pages_dirty| 1837   |
| Innodb_buffer_pool_pages_flushed  | 673837 |
| Innodb_buffer_pool_pages_free | 15779  |
| Innodb_buffer_pool_pages_latched  | 0  |
| Innodb_buffer_pool_pages_misc | 601|
| Innodb_buffer_pool_pages_total| 22400  |
| Innodb_buffer_pool_read_ahead_rnd | 1  |
| Innodb_buffer_pool_read_ahead_seq | 0  |
| Innodb_buffer_pool_read_requests  | 48471963   |
| Innodb_buffer_pool_reads  | 3497   |
| Innodb_buffer_pool_wait_free  | 0  |
| Innodb_buffer_pool_write_requests | 21700478   |

Why would I need to increase?

Thanks

BR
AJ

On Thu, Sep 2, 2010 at 4:47 PM, Jangita jang...@jangita.com wrote:

 On 02/09/2010 4:46 p, Alexandre Vieira wrote:

 John, Johnny,

 Thanks for the prompt answer.

  ...

  We also run some other applications in the server, but nothing that
 consumes
 all the CPU/Memory. The machine has almost 1GB of free memory and 50% of
 idle CPU time at any time.

 TIA

 BR
 Alex


 Increase innodb_buffer_pool_size say to 1GB?
 --
 Jangita | +256 76 91 8383 | Y!  MSN: jang...@yahoo.com
 Skype: jangita | GTalk: jangita.nyag...@gmail.com

 --
 MySQL General Mailing List
 For list archives: http://lists.mysql.com/mysql
 To unsubscribe:http://lists.mysql.com/mysql?unsub=nul...@gmail.com




-- 
Alexandre Vieira - nul...@gmail.com


RE: Performance problems on MySQL

2010-09-02 Thread Travis Ard
Have you considered adding a secondary index on the units column for your
delete queries?

DELETE FROM clientinfo WHERE units='155618918';

-Original Message-
From: Alexandre Vieira [mailto:nul...@gmail.com] 
Sent: Thursday, September 02, 2010 8:46 AM
To: John Daisley; joh...@pixelated.net
Cc: mysql@lists.mysql.com
Subject: Performance problems on MySQL

John, Johnny,

Thanks for the prompt answer.

mysql SHOW CREATE TABLE clientinfo;
++--




+
| Table  | Create
Table
|
++--




+
| clientinfo | CREATE TABLE `clientinfo` (
  `userid` varchar(21) NOT NULL default '',
  `units` float default NULL,
  `date_last_query` datetime default NULL,
  `last_acc` int(10) unsigned default NULL,
  `date_last_units` datetime default NULL,
  `notification` int(10) unsigned NOT NULL default '0',
  `package` char(1) default NULL,
  `user_type` varchar(5) default NULL,
  PRIMARY KEY  (`userid`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 |
++--




+
1 row in set (0.00 sec)
mysql SHOW INDEX FROM clientinfo;
+++--+--+-+-
--+-+--++--++-+
| Table  | Non_unique | Key_name | Seq_in_index | Column_name |
Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |
+++--+--+-+-
--+-+--++--++-+
| clientinfo |  0 | PRIMARY  |1 | userid  |
A |  460056 | NULL | NULL   |  | BTREE  | |
+++--+--+-+-
--+-+--++--++-+
1 row in set (0.00 sec)


SELECT * FROM clientinfo WHERE userid='182106617';

UPDATE clientinfo SET
units=0.0,date_last_query=now(),user_type='POS',last_acc=167,date_last_units
=now(),notification=0
WHERE userid='152633876';

INSERT INTO clientinfo VALUES ('171918726',101.0,now(),1,now(),0,'D','PRE')
ON DUPLICATE KEY UPDATE units=101.0, date_last_query=now(), last_acc=1,
date_last_units=now(), notification=0, package='D', user_type='PRE';

DELETE FROM clientinfo WHERE units='155618918';

There are no other type of queries.

We're running this DB on a Sun-Fire V240. 2xUIIIi 1.5ghz with 2GB of RAM.

We also run some other applications in the server, but nothing that consumes
all the CPU/Memory. The machine has almost 1GB of free memory and 50% of
idle CPU time at any time.

TIA

BR
Alex


On Thu, Sep 2, 2010 at 1:52 PM, John Daisley
daisleyj...@googlemail.comwrote:

 What is the hardware spec? Anything else running on the box?

 Why are you replicating but not making use of the slave?

 Can you post the output of SHOW CREATE TABLE?

 Regards
 John





-- 
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe:http://lists.mysql.com/mysql?unsub=arch...@jab.org



Re: Performance problems on MySQL

2010-09-02 Thread Alexandre Vieira
Hi Travis,

Sorry, bad copy/paste. That DELETE statement is wrong.

The application executes:

DELETE FROM clientinfo WHERE userid='x';

BR
AJ

On Thu, Sep 2, 2010 at 5:23 PM, Travis Ard travis_...@hotmail.com wrote:

 Have you considered adding a secondary index on the units column for your
 delete queries?

 DELETE FROM clientinfo WHERE units='155618918';

 -Original Message-
 From: Alexandre Vieira [mailto:nul...@gmail.com]
 Sent: Thursday, September 02, 2010 8:46 AM
 To: John Daisley; joh...@pixelated.net
 Cc: mysql@lists.mysql.com
 Subject: Performance problems on MySQL

 John, Johnny,

 Thanks for the prompt answer.

 mysql SHOW CREATE TABLE clientinfo;

 ++--

 

 

 

 
 +
 | Table  | Create
 Table
 |

 ++--

 

 

 

 
 +
 | clientinfo | CREATE TABLE `clientinfo` (
  `userid` varchar(21) NOT NULL default '',
  `units` float default NULL,
  `date_last_query` datetime default NULL,
  `last_acc` int(10) unsigned default NULL,
  `date_last_units` datetime default NULL,
  `notification` int(10) unsigned NOT NULL default '0',
  `package` char(1) default NULL,
  `user_type` varchar(5) default NULL,
  PRIMARY KEY  (`userid`)
 ) ENGINE=InnoDB DEFAULT CHARSET=latin1 |

 ++--

 

 

 

 
 +
 1 row in set (0.00 sec)
 mysql SHOW INDEX FROM clientinfo;

 +++--+--+-+-
 --+-+--++--++-+
 | Table  | Non_unique | Key_name | Seq_in_index | Column_name |
 Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment |

 +++--+--+-+-
 --+-+--++--++-+
 | clientinfo |  0 | PRIMARY  |1 | userid  |
 A |  460056 | NULL | NULL   |  | BTREE  | |

 +++--+--+-+-
 --+-+--++--++-+
 1 row in set (0.00 sec)


 SELECT * FROM clientinfo WHERE userid='182106617';

 UPDATE clientinfo SET

 units=0.0,date_last_query=now(),user_type='POS',last_acc=167,date_last_units
 =now(),notification=0
 WHERE userid='152633876';

 INSERT INTO clientinfo VALUES ('171918726',101.0,now(),1,now(),0,'D','PRE')
 ON DUPLICATE KEY UPDATE units=101.0, date_last_query=now(), last_acc=1,
 date_last_units=now(), notification=0, package='D', user_type='PRE';

 DELETE FROM clientinfo WHERE units='155618918';

 There are no other type of queries.

 We're running this DB on a Sun-Fire V240. 2xUIIIi 1.5ghz with 2GB of RAM.

 We also run some other applications in the server, but nothing that
 consumes
 all the CPU/Memory. The machine has almost 1GB of free memory and 50% of
 idle CPU time at any time.

 TIA

 BR
 Alex


 On Thu, Sep 2, 2010 at 1:52 PM, John Daisley
 daisleyj...@googlemail.comwrote:

  What is the hardware spec? Anything else running on the box?
 
  Why are you replicating but not making use of the slave?
 
  Can you post the output of SHOW CREATE TABLE?
 
  Regards
  John
 
 
 




-- 
Alexandre Vieira - nul...@gmail.com