Mike,
> Ronan,
> You haven't given us much to go on.
I�m sorry.
> Is this application running on a web server?
Yes, but in a diferent machine connecting via TCP/IP.
> 1) How many rows are your queries returning? (on average) and how long
does
> it take?
Hmmm... Most of the queries are limited in 10 rows.
> 2) How many connected users do you have?
mysql> show status;
+--------------------------+-----------+
| Variable_name | Value |
+--------------------------+-----------+
| Aborted_clients | 64 |
| Aborted_connects | 2 |
| Bytes_received | 212069034 |
| Bytes_sent | 262377934 |
| Com_admin_commands | 29410 |
| Com_alter_table | 8 |
| Com_analyze | 0 |
| Com_backup_table | 0 |
| Com_begin | 0 |
| Com_change_db | 100 |
| Com_change_master | 0 |
| Com_check | 0 |
| Com_commit | 0 |
| Com_create_db | 0 |
| Com_create_function | 0 |
| Com_create_index | 2 |
| Com_create_table | 11 |
| Com_delete | 1583 |
| Com_delete_multi | 0 |
| Com_drop_db | 0 |
| Com_drop_function | 0 |
| Com_drop_index | 0 |
| Com_drop_table | 0 |
| Com_flush | 0 |
| Com_grant | 0 |
| Com_ha_close | 0 |
| Com_ha_open | 0 |
| Com_ha_read | 0 |
| Com_insert | 2563489 |
| Com_insert_select | 0 |
| Com_kill | 0 |
| Com_load | 0 |
| Com_load_master_data | 0 |
| Com_load_master_table | 0 |
| Com_lock_tables | 0 |
| Com_optimize | 0 |
| Com_purge | 0 |
| Com_rename_table | 0 |
| Com_repair | 0 |
| Com_replace | 0 |
| Com_replace_select | 0 |
| Com_reset | 0 |
| Com_restore_table | 0 |
| Com_revoke | 0 |
| Com_rollback | 0 |
| Com_savepoint | 0 |
| Com_select | 138419 |
| Com_set_option | 58392 |
| Com_show_binlog_events | 0 |
| Com_show_binlogs | 0 |
| Com_show_create | 0 |
| Com_show_databases | 4 |
| Com_show_fields | 450 |
| Com_show_grants | 0 |
| Com_show_keys | 9 |
| Com_show_logs | 0 |
| Com_show_master_status | 0 |
| Com_show_new_master | 0 |
| Com_show_open_tables | 0 |
| Com_show_processlist | 3 |
| Com_show_slave_hosts | 0 |
| Com_show_slave_status | 0 |
| Com_show_status | 42 |
| Com_show_innodb_status | 0 |
| Com_show_tables | 59 |
| Com_show_variables | 43 |
| Com_slave_start | 0 |
| Com_slave_stop | 0 |
| Com_truncate | 0 |
| Com_unlock_tables | 0 |
| Com_update | 38089 |
| Connections | 61 |
| Created_tmp_disk_tables | 3572 |
| Created_tmp_tables | 26901 |
| Created_tmp_files | 0 |
| Delayed_insert_threads | 0 |
| Delayed_writes | 0 |
| Delayed_errors | 0 |
| Flush_commands | 1 |
| Handler_commit | 16 |
| Handler_delete | 141469 |
| Handler_read_first | 1138 |
| Handler_read_key | 58809799 |
| Handler_read_next | 46576628 |
| Handler_read_prev | 430340 |
| Handler_read_rnd | 413436 |
| Handler_read_rnd_next | 166792550 |
| Handler_rollback | 1 |
| Handler_update | 3691731 |
| Handler_write | 12902461 |
| Key_blocks_used | 93763 |
| Key_read_requests | 240598220 |
| Key_reads | 82544 |
| Key_write_requests | 21429673 |
| Key_writes | 16389083 |
| Max_used_connections | 36 |
| Not_flushed_key_blocks | 6 |
| Not_flushed_delayed_rows | 0 |
| Open_tables | 346 |
| Open_files | 375 |
| Open_streams | 0 |
| Opened_tables | 405 |
| Questions | 2902623 |
| Qcache_queries_in_cache | 22701 |
| Qcache_inserts | 100527 |
| Qcache_hits | 101913 |
| Qcache_lowmem_prunes | 0 |
| Qcache_not_cached | 37892 |
| Qcache_free_memory | 35086904 |
| Qcache_free_blocks | 2804 |
| Qcache_total_blocks | 48436 |
| Rpl_status | NULL |
| Select_full_join | 1339 |
| Select_full_range_join | 2 |
| Select_range | 7383 |
| Select_range_check | 0 |
| Select_scan | 5684 |
| Slave_open_temp_tables | 0 |
| Slave_running | OFF |
| Slow_launch_threads | 0 |
| Slow_queries | 2897 |
| Sort_merge_passes | 0 |
| Sort_range | 6598 |
| Sort_rows | 423007 |
| Sort_scan | 24793 |
| Table_locks_immediate | 2759606 |
| Table_locks_waited | 26700 |
| Threads_cached | 6 |
| Threads_created | 37 |
| Threads_connected | 16 |
| Threads_running | 4 |
| Uptime | 14876 |
+--------------------------+-----------+
132 rows in set (0.00 sec)
> 3) Are these queries using multi-table joins?
Yes.
> 4) Can you provide us with the table structure and query for the slow
queries?
Yes.
Here it is a slowly query, it take about 15 seconds:
SELECT f.dtrelease AS fdtrelease, f.cod AS fcod, f.title AS title,
vf.price AS vfprice, vf.cod AS vfcod
FROM film AS f, rent_film AS r, film_format AS ff, film_sale AS vf
WHERE r.codrent = 1123
AND ff.codfil = f.cod
AND r.film_format = ff.cod
AND vf.codrf = l.cod
AND ff.media = 2
GROUP BY f.cod
ORDER BY fdtrelease desc
LIMIT 0,4
Another one:
SELECT f.cod AS fcod, f.title AS title
FROM film AS f, rent_film AS r, film_format AS ff
WHERE r.codloc = 1123
AND ff.codfil = f.cod
AND r.film_format = ff.cod
AND f.type <> 21
AND ( ( TO_DAYS( CURDATE() ) - TO_DAYS( f.dtrelease ) <= 180
AND TO_DAYS(CURDATE()) - TO_DAYS(f.dtrelease) >= 0 )
OR ( r.release = 1 AND f.dtrelease <= CURDATE() ) )
GROUP BY f.cod
ORDER BY f.dtrelease DESC
LIMIT 0,5
Table film:
=======
Name: film
Type: MyISAM
Row format: Dynamic
Rows: 20514
Avg_row_lenght: 386
Data_lenght: 7921984
Max_data_lenght: 4294967295
Index_lenght: 9746432
Data_free: 0
Auto_increment: 21291
mysql> show columns from film;
+----------+----------------------+------+-----+------------+---------------
-+
| Field | Type | Null | Key | Default | Extra
|
+----------+----------------------+------+-----+------------+---------------
-+
| cod | int(11) unsigned | | PRI | NULL | auto_increment
|
| title | varchar(250) | | MUL | |
|
| titorig | varchar(250) | | MUL | |
|
| year | smallint(6) unsigned | YES | | NULL |
|
| time | smallint(6) unsigned | YES | | NULL | |
| sinopse | longtext | YES | MUL | NULL |
|
| type | int(11) unsigned | | MUL | 0 | |
| origem | int(11) unsigned | | MUL | 0 |
|
| coddistr | int(11) unsigned | | MUL | 0 |
|
| dtrelease | date | | MUL | 0000-00-00 |
|
| trailler | char(1) | YES | MUL | NULL |
|
| site | varchar(200) | YES | | NULL |
|
+----------+----------------------+------+-----+------------+---------------
-+
12 rows in set (0.01 sec)
Indexes (9):
------------
1. cod
2. type
3. origem
4. coddistr
5. dtrelease
6. trailler
7. title
8. titorig
9. sinopse
Table rent_film:
===========
Name: rent_film
Type: MyISAM
Row format: Fixed
Rows: 615059
Avg_row_lenght: 21
Data_lenght: 36820623
Max_data_lenght: 90194313215
Index_lenght: 84508672
Data_free: 2904384
Auto_increment: 2581442
mysql> show columns from rent_film;
+---------------+----------------------+------+-----+---------+-------------
---+
| Field | Type | Null | Key | Default | Extra
|
+---------------+----------------------+------+-----+---------+-------------
---+
| cod | int(11) unsigned | | PRI | NULL |
auto_increment |
| codrent | int(11) unsigned | | MUL | 0 |
|
| film_format | int(11) unsigned | | MUL | 0 |
|
| category | int(11) unsigned | | MUL | 0 |
|
| qtd | smallint(5) unsigned | | | 0 |
|
| release | tinyint(3) unsigned | | MUL | 0 |
|
| deploied | tinyint(3) unsigned | | MUL | 1 |
|
+---------------+----------------------+------+-----+---------+-------------
---+
7 rows in set (0.02 sec)
Indexes (6):
------------
1. cod
2. film_format
3. release
4. deploied
5. category
6. codrent, film_format
Table film_format:
===========
Name: film_format
Type: MyISAM
Row format: Dynamic
Rows: 45315
Avg_row_lenght: 41
Data_lenght: 1862868
Max_data_lenght: 4294967295
Index_lenght: 3154944
Data_free: 0
Auto_increment: 45854
mysql> show columns from film_format;
+------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+------------+------------------+------+-----+---------+----------------+
| cod | int(11) unsigned | | PRI | NULL | auto_increment |
| codfil | int(11) unsigned | | MUL | 0 | |
| media | int(11) unsigned | | MUL | 0 | |
| format | int(11) unsigned | | MUL | 0 | |
| language | int(11) unsigned | YES | MUL | 0 | |
| sbutitle | int(11) unsigned | YES | MUL | 0 | |
| audio_type | int(11) unsigned | YES | MUL | 0 | |
| area | char(1) | YES | | NULL | |
| inform | longtext | YES | | NULL | |
| dtrelease | date | YES | MUL | NULL | |
+------------+------------------+------+-----+---------+----------------+
10 rows in set (0.01 sec)
Indexes (8):
------------
1. cod
2. codfil
3. media
4. format
5. language
6. subtitle
7. audio_type
8. dtrelease
Table film_sale:
===========
Name: film_sale
Type: MyISAM
Row format: Fixed
Rows: 5908
Avg_row_lenght: 35
Data_lenght: 244755
Max_data_lenght: 150323855359
Index_lenght: 216064
Data_free: 37975
Auto_increment: 9059
mysql> show columns from film_sale;
+--------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------+------------------+------+-----+---------+----------------+
| cod | int(11) unsigned | | PRI | NULL | auto_increment |
| codrent | int(11) unsigned | | MUL | 0 | |
| codrf | int(11) unsigned | | MUL | 0 | |
| price | decimal(20,2) | | | 0.00 | |
+--------+------------------+------+-----+---------+----------------+
4 rows in set (0.00 sec)
Indexes (3):
------------
1. cod
2. codrent
3. codrf
> 5) Can you provide us with a "Show Status"
Yes. Right above
6) Are you using MyISAM or InnoDb tables?
MyISAM
> The more information you can provide, the more accurate the answer will
be.
> The MySQL manual has plenty of articles on optimization:
> http://www.mysql.com/doc/en/MySQL_Optimisation.html
Thank you Mike, I�ve already read it, but my main problem is
it�s a system on production and I cant change the whole site struct
quickly... :-/
I need a temporary solution at first.
Thank you very much,
Ronan
--
MySQL General Mailing List
For list archives: http://lists.mysql.com/mysql
To unsubscribe: http://lists.mysql.com/[EMAIL PROTECTED]