Hi Mark,

I say PHP below because I'm just assuming that's what's connecting to
MySQL. :-)


----- Original Message -----
From: "Mark Teehan"
Sent: Monday, October 27, 2003 2:42 AM
Subject: interpreting extended statistics


> Hi
> I am a new MySQL dba tuning a busy Apache/MySQL installation. I could
do
> with some advice from the gurus!
> Here are some of the statistics for the last 24 hours:
>
>  Com_admin_commands        978,760
> What "Admin_Commands" does this include - at 11.3 per sec this is a
> lot!

I didn't know what "admin_commands" were either. :-) But I just took a
quick look at the source to see where this variable is incremented.
There's a couple things but it looks like it's in a "change user"
function. It's at 0 on my system, however. BUT, I don't use persistent
connections. I enabled them, and sure enough, this variable started
increasing. :-) So, it looks like on the initial connection, there's no
"change user" because the user is sent in mysql_connect(). But when
there's an existing persistent connection for the current Apache
process, PHP uses it and must do a mysql_change_user() using the
user/pass in mysql_pconnect() even if it's the same user -- although I
thought persistent connections were just for the same user according to
the PHP manual...

Aha, I see why this must happen in PHP! From the MySQL manual for
mysql_change_user():

"Starting from MySQL 4.0.6 this command will always ROLLBACK any active
transactions, close all temporary tables, unlock all locked tables and
reset the state as if one had done a new connect. This will happen even
if the user didn't change."

PHP must do that to fix all those nasty problems I had with persistent
connections!

Maybe too much info for you, but I learned something from this. :-)


>  Com_analyze               0
> The indexes have not been analyzed at all: so the optimizer assumes no
> data skew. How good is the optimizer: will having accurate stats cause
> if to scan too much, or is it safe to assume that any stats are good
> stats? Does everyone out there analyze their tables?

Com_analyze being 0 doesn't indicate that the tables aren't analyzed.
Just that no ANALYZE command has been run since the server started.


>  Connections               536,998
> So it is processing about 6.2 connections per second. Lots. It is
> configured for a max of 700 connections, and generally has about 300
> connection processes. My question is if it has a connection pool (from
> apache) are these really new connections (i.e. start a new connection
> process, allocate memory etc) - or is it efficiently re-using existing
> connections from the pool  and just incrementing the counter?

No, those are actually new, fresh connections. PHP's persistent
connections aren't pooled unfortunately. :-( They're only usable in the
Apache process that created the connection. This leaves idle MySQL
connections even when that Apache process is serving a non-PHP request,
among other things.

These new connections won't start a new connection thread (most of the
time) since it looks like you have thread_cache_size set to a non-zero
value (because Threads_created < Connections).


>   Sort_merge_passes         25
>   Sort_range                57,128
>   Sort_rows                 11,368,012
>   Sort_scan                 126,770
> The machine has a 1MB sort_buffer_size - which for 300-700 connections
> is 300-700MB that I would prefer to use for the key_buffer. Is there
> any wany I can tell from these stats that it is safe to reduce the
> sort_buffer_size?

Sort_merge_passes is 25. I think this means that 25 times
sort_buffer_size wasn't large enough to do the sort completely in
memory.

I don't know if sort_buffer_size is allocated all at once or as needed
up to the set size. If the latter, lowering it probably wouldn't save
much memory. If the former, try setting it to 512K or something. If
Sort_merge_passes doesn't go up by a lot, it should be fine.

What is the size of your key_buffer? It doesn't look like you need it
very big, because from the status below, Key_reads is only 1090 (~1MB
;-)). Are you using only MyISAM tables?


> Ive got as much info as I can from newsgroups and the manual: but
> tuning MySQL seems more like magic than science. Any comments much
> appreciated!!
> Mark

I would also suggest upgrading to MySQL 4 for speed improvements. And
don't forget to set query_cache_size to 32M or so! :-)


Hope that helps.


Matt


> (p.s. heres the full list of changes for 24 hours:
>  Aborted_clients           11
>  Aborted_connects          0
>  Bytes_received            726,146,766
>  Bytes_sent                3,574,227,784
>  Com_admin_commands        978,760
>  Com_alter_table           0
>  Com_analyze               0
>  Com_backup_table          0
>  Com_begin                 0
>  Com_change_db             1,510,345
>  Com_change_master         0
>  Com_check                 0
>  Com_commit                1,787
>  Com_create_db             0
>  Com_create_function       0
>  Com_create_index          0
>  Com_create_table          0
>  Com_delete                33,768
>  Com_drop_db               0
>  Com_drop_function         0
>  Com_drop_index            0
>  Com_drop_table            0
>  Com_flush                 0
>  Com_grant                 0
>  Com_insert                164,361
>  Com_insert_select         12
>  Com_kill                  0
>  Com_load                  0
>  Com_load_master_table     0
>  Com_lock_tables           0
>  Com_optimize              0
>  Com_purge                 0
>  Com_rename_table          0
>  Com_repair
>  Com_replace               20,631
>  Com_replace_select        1
>  Com_reset                 0
>  Com_restore_table         0
>  Com_revoke                0
>  Com_rollback              0
>  Com_select                5,780,420
>  Com_set_option            103
>  Com_show_binlogs          0
>  Com_show_create           103
>  Com_show_databases        0
>  Com_show_fields           103
>  Com_show_grants           0
>  Com_show_keys             0
>  Com_show_logs             0
>  Com_show_master_status    0
>  Com_show_open_tables      0
>  Com_show_processlist      0
>  Com_show_slave_status     0
>  Com_show_status           4
>  Com_show_innodb_status    0
>  Com_show_tables           3
>  Com_show_variables        0
>  Com_slave_start           0
>  Com_slave_stop            0
>  Com_truncate              0
>  Com_unlock_tables         0
>  Com_update                895,584
>  Connections               536,998
>  Created_tmp_disk_tables   7,928
>  Created_tmp_tables        57,552
>  Created_tmp_files         50
>  Delayed_insert_threads    0
>  Delayed_errors            0
>  Flush_commands            0
>  Handler_delete            157,555
>  Handler_read_first        19,825
>  Handler_read_key          31,733,152
>  Handler_read_next         1,109,099,218
>  Handler_read_prev         0
>  Handler_read_rnd          9,864,713
>  Handler_read_rnd_next     -102,644,059
>  Handler_update            3,657,710
>  Handler_write             9,068,562
>  Key_blocks_used           0
>  Key_read_requests         123,092,508
>  Key_reads                 1,090
>  Key_write_requests        1,221,214
>  Key_writes                470,310
>  Max_used_connections      0
>  Not_flushed_key_blocks    0
>  Not_flushed_delayed_rows  0
>  Open_tables               0
>  Open_files                -1
>  Open_streams              0
>  Opened_tables             256
>  Questions                 8,944,173
>  Select_full_join          10,210
>  Select_full_range_join    0
>  Select_range              4,898
>  Select_range_check        2
>  Select_scan               1,629,106
>  Slave_running             0
>  Slave_open_temp_tables    0
>  Slow_launch_threads       0
>  Slow_queries              1
>  Sort_merge_passes         25
>  Sort_range                57,128
>  Sort_rows                 11,368,012
>  Sort_scan                 126,770
>  Table_locks_immediate     7,149,531
>  Table_locks_waited        136,276
>  Threads_cached            0
>  Threads_created           8,738
>  Threads_connected         48
>  Threads_running           1
>  Uptime                    86,400
>
> Many Thanks!


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

Reply via email to