Hi 
I am using Mysql 4.1 on 

CPU 2 Xeon 3.0 Ghz + 2 Virtual (Hyperthreads) (I think it is not using the 2nd 
processor)
Memory 4GB
I think that the read from  the HDD is 50mb per 1 sec, but I am not sure.

I have very big problem with performance, because there are very bad search 
queries, but even worse  after I tuned some of the mysql system variables


There are 2 main tables(MyIsam) that are in many to many table relation ship


3 million records up to now, the table has about 35 well typed columns.

tbl_items       0       PRIMARY 1       item_id A       2594514 \N      \N      
        BTREE   
tbl_items       1       type_id 1       type_id A       2       \N      \N      
        BTREE   
tbl_items       1       type_id 2       item_rights     A       4       \N      
\N      YES     BTREE   
tbl_items       1       source  1       item_source     A       1652    \N      
\N              BTREE   
tbl_items       1       date_created    1       date_created    A       10174   
\N      \N              BTREE   
tbl_items       1       set_id  1       set_id  A       96093   \N      \N      
        BTREE   
tbl_items       1       set_id  2       date_created    A       152618  \N      
\N              BTREE   
tbl_items       1       simple_search   1       caption \N      1       \N      
\N      YES     FULLTEXT        
tbl_items       1       simple_search   2       keywords        \N      1       
\N      \N      YES     FULLTEXT

6  million but it’s has only 3 columnst (twi int(11) and 1 int(2) 

tbl_items_categories    0       PRIMARY 1       id      A       \N      \N      
\N              BTREE   
tbl_items_categories    0       PRIMARY 2       item_id A       \N      \N      
\N              BTREE   
tbl_items_categories    0       PRIMARY 3       category_id     A       5729087 
\N      \N              BTREE   
tbl_items_categories    1       FK_item_category_idx    1       category_id     
A       63      \N      \N              BTREE   
tbl_items_categories    1       item_id 1       item_id A       5729087 \N      
\N              BTREE           

The queries are:

SELECT  <SOME FIELDS>
FROM tbl_items i WHERE (MATCH(i.caption, i.keywords) AGAINST ('london' IN 
BOOLEAN MODE )) 
AND (((i.product_id = 4 OR i.product_id2 = 4))) ORDER BY i.date_created DESC 
LIMIT 0, 24;

SELECT DISTINCT<SOME FIELDS> 
FROM tbl_items i, tbl_items_categories icpx 
WHERE icpx.item_id = i.item_id AND (MATCH(i.caption, i.keywords) AGAINST 
('london' IN BOOLEAN MODE )) 
AND (((i.product_id =4 OR i.product_id2 = 4) AND (icpx.category_id = 11))) 
ORDER BY i.date_created DESC LIMIT 0, 24;

SELECT DISTINCT<SOME FIELDS> 
FROM tbl_items i, tbl_items_categories icpx 
WHERE icpx.item_id = i.item_id 
AND (((i.product_id =4 OR i.product_id2 = 4) AND (icpx.category_id = 11))) 
ORDER BY i.date_created DESC LIMIT 0, 24;


SELECT DISTINCT <SOME FIELDS>
 FROM tbl_items i, tbl_items_categories icpx 
WHERE icpx.item_id = i.item_id AND (MATCH(i.caption, i.keywords) AGAINST 
('london' IN BOOLEAN MODE )) 
AND (((i.product_id =6 OR i.product_id2 = 6) AND (icpx.category_id = 83 OR 
icpx.category_id = 87)) 
OR ((i.product_id = 5 OR i.product_id2 = 5) AND (icpx.category_id = 24)) 
OR ((i.product_id = 4 OR i.product_id2 = 4) AND (icpx.category_id = 12))) 
ORDER BY i.date_created DESC LIMIT 0, 24;

SELECT DISTINCT <SOME FIELDS>
 FROM tbl_items i, tbl_items_categories icpx 
WHERE icpx.item_id = i.item_id 
AND (((i.product_id =6 OR i.product_id2 = 6) AND (icpx.category_id = 83 OR 
icpx.category_id = 87)) 
OR ((i.product_id = 5 OR i.product_id2 = 5) AND (icpx.category_id = 24)) 
OR ((i.product_id = 4 OR i.product_id2 = 4) AND (icpx.category_id = 12))) 
ORDER BY i.date_created DESC LIMIT 0, 24;


I personally don’t like them, because first it can be used unions instead OR.
Also there are many parenthesis ant it will be slow for parsing.
But the worse is that when you are not using keyword(i.e. fulltext search) and 
the joining with distinct + order by is killing every thing,
I see in the show processlist copy to tmp that takes from 1-3 minutes to 
execute.

I remove the search without keywords for now and tuned some part of the system 
variables but copy to tmp appears  again. 
Also the mysql is 4.1 it cannot use merge indexes, so it uses only fulltext 
search index, and the ordering becames very slow, even that is the 
Bat thing that causes copy to tmp to appear, and when there is no memory it 
writes to disk ? that tmp table. Also 
Mysql 4.1 uses 1 index per query per table that is terrible ?.

I am thinking to remake the queries with unions and to set product_id2 to index 
with date_created, the same for product_id i.e
Index on iproduct_id, item_datecareted) and the same for the other.

There are some times big slow select, and after it happens write and this 
blocks all other selects the appear Locked in the show processlist;

Please advice how to optimize this situation, I read that the tmp ordering can 
be optimized with moving the mysql tmp dir to another fast disck or even ram 
disc(tmpfs may be?)

Here are the system variables :

back_log        50
basedir /
binlog_cache_size       32768
bulk_insert_buffer_size 8388608
character_set_client    utf8
character_set_connection        utf8
character_set_database  latin1
character_set_results   utf8
character_set_server    latin1
character_set_system    utf8
character_sets_dir      /usr/share/mysql/charsets/
collation_connection    utf8_general_ci
collation_database      latin1_swedish_ci
collation_server        latin1_swedish_ci
concurrent_insert       ON
connect_timeout 5
datadir /var/lib/mysql/
date_format     %Y-%m-%d
datetime_format %Y-%m-%d %H:%i:%s
default_week_format     0
delay_key_write ON
delayed_insert_limit    100
delayed_insert_timeout  300
delayed_queue_size      1000
expire_logs_days        3
flush   OFF
flush_time      0
ft_boolean_syntax       + -><()~*:""&|
ft_max_word_len 84
ft_min_word_len 3
ft_query_expansion_limit        20
ft_stopword_file        (built-in)
group_concat_max_len    1024
have_archive    YES
have_bdb        NO
have_blackhole_engine   NO
have_compress   YES
have_crypt      YES
have_csv        NO
have_example_engine     NO
have_geometry   YES
have_innodb     YES
have_isam       NO
have_merge_engine       YES
have_ndbcluster NO
have_openssl    NO
have_query_cache        YES
have_raid       NO
have_rtree_keys YES
have_symlink    YES
init_connect    
init_file       
init_slave      
innodb_additional_mem_pool_size 1048576
innodb_autoextend_increment     8
innodb_buffer_pool_awe_mem_mb   0
innodb_buffer_pool_size 8388608
innodb_data_file_path   ibdata1:10M:autoextend
innodb_data_home_dir    
innodb_fast_shutdown    ON
innodb_file_io_threads  4
innodb_file_per_table   OFF
innodb_flush_log_at_trx_commit  1
innodb_flush_method     
innodb_force_recovery   0
innodb_lock_wait_timeout        50
innodb_locks_unsafe_for_binlog  OFF
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_max_dirty_pages_pct      90
innodb_max_purge_lag    0
innodb_mirrored_log_groups      1
innodb_open_files       300
innodb_table_locks      ON
innodb_thread_concurrency       8
interactive_timeout     28800
join_buffer_size        4190208
key_buffer_size 1073741824
key_cache_age_threshold 300
key_cache_block_size    1024
key_cache_division_limit        100
language        /usr/share/mysql/english/
large_files_support     ON
lc_time_names   en_US
license GPL
local_infile    ON
locked_in_memory        OFF
log     OFF
log_bin ON
log_error       
log_slave_updates       OFF
log_slow_queries        ON
log_update      OFF
log_warnings    1
long_query_time 10
low_priority_updates    OFF
lower_case_file_system  OFF
lower_case_table_names  0
max_allowed_packet      1047552
max_binlog_cache_size   4294967295
max_binlog_size 1073741824
max_connect_errors      10
max_connections 200
max_delayed_threads     20
max_error_count 64
max_heap_table_size     104856576
max_insert_delayed_threads      20
max_join_size   18446744073709551615
max_length_for_sort_data        1024
max_prepared_stmt_count 16382
max_relay_log_size      0
max_seeks_for_key       4294967295
max_sort_length 1024
max_tmp_tables  90
max_user_connections    0
max_write_lock_count    4294967295
myisam_data_pointer_size        4
myisam_max_extra_sort_file_size 2147483648
myisam_max_sort_file_size       2147483647
myisam_recover_options  OFF
myisam_repair_threads   1
myisam_sort_buffer_size 67108864
myisam_stats_method     nulls_unequal
net_buffer_length       16384
net_read_timeout        30
net_retry_count 10
net_write_timeout       60
new     OFF
old_passwords   OFF
open_files_limit        1024
pid_file        /var/lib/mysql/localhost.localdomain.pid
port    3306
preload_buffer_size     32768
prepared_stmt_count     0
protocol_version        10
query_alloc_block_size  8192
query_cache_limit       8388608
query_cache_min_res_unit        4096
query_cache_size        33554432
query_cache_type        ON
query_cache_wlock_invalidate    OFF
query_prealloc_size     8192
range_alloc_block_size  2048
read_buffer_size        2093056
read_only       OFF
read_rnd_buffer_size    8384512
relay_log_purge ON
relay_log_space_limit   0
rpl_recovery_rank       0
secure_auth     OFF
server_id       1
skip_external_locking   ON
skip_networking OFF
skip_show_database      OFF
slave_net_timeout       3600
slave_transaction_retries       0
slow_launch_time        2
socket  /var/lib/mysql/mysql.sock
sort_buffer_size        4194296
sql_mode        
sql_notes       ON
sql_warnings    ON
storage_engine  MyISAM
sync_binlog     1
sync_frm        ON
sync_replication        0
sync_replication_slave_id       0
sync_replication_timeout        0
system_time_zone        CDT
table_cache     407
table_type      MyISAM
thread_cache_size       16
thread_stack    196608
time_format     %H:%i:%s
time_zone       SYSTEM
tmp_table_size  536870912
tmpdir  
transaction_alloc_block_size    8192
transaction_prealloc_size       4096
tx_isolation    REPEATABLE-READ
version 4.1.22-standard-log
version_comment MySQL Community Edition - Standard (GPL)
version_compile_machine i686
version_compile_os      pc-linux-gnu
wait_timeout    28800


Show status


Aborted_clients 234
Aborted_connects        0
Binlog_cache_disk_use   0
Binlog_cache_use        0
Bytes_received  225606412
Bytes_sent      3005443782
Com_admin_commands      66
Com_alter_db    0
Com_alter_table 0
Com_analyze     0
Com_backup_table        0
Com_begin       1
Com_change_db   183
Com_change_master       0
Com_check       0
Com_checksum    0
Com_commit      0
Com_create_db   0
Com_create_function     0
Com_create_index        0
Com_create_table        0
Com_dealloc_sql 0
Com_delete      1280
Com_delete_multi        3
Com_do  0
Com_drop_db     0
Com_drop_function       0
Com_drop_index  0
Com_drop_table  0
Com_drop_user   0
Com_execute_sql 0
Com_flush       0
Com_grant       0
Com_ha_close    0
Com_ha_open     0
Com_ha_read     0
Com_help        0
Com_insert      32819
Com_insert_select       43
Com_kill        0
Com_load        0
Com_load_master_data    0
Com_load_master_table   0
Com_lock_tables 0
Com_optimize    0
Com_preload_keys        0
Com_prepare_sql 0
Com_purge       0
Com_purge_before_date   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_revoke_all  0
Com_rollback    0
Com_savepoint   0
Com_select      250474
Com_set_option  607
Com_show_binlog_events  0
Com_show_binlogs        0
Com_show_charsets       0
Com_show_collations     158
Com_show_column_types   0
Com_show_create_db      0
Com_show_create_table   308
Com_show_databases      4
Com_show_errors 0
Com_show_fields 145
Com_show_grants 0
Com_show_innodb_status  0
Com_show_keys   45
Com_show_logs   0
Com_show_master_status  0
Com_show_ndb_status     0
Com_show_new_master     0
Com_show_open_tables    0
Com_show_privileges     0
Com_show_processlist    320
Com_show_slave_hosts    1
Com_show_slave_status   0
Com_show_status 1
Com_show_storage_engines        0
Com_show_tables 108
Com_show_variables      173
Com_show_warnings       0
Com_slave_start 0
Com_slave_stop  0
Com_stmt_close  0
Com_stmt_execute        0
Com_stmt_prepare        0
Com_stmt_reset  0
Com_stmt_send_long_data 0
Com_truncate    0
Com_unlock_tables       1
Com_update      78123
Com_update_multi        0
Connections     170
Created_tmp_disk_tables 5454
Created_tmp_files       1010
Created_tmp_tables      22223
Delayed_errors  0
Delayed_insert_threads  0
Delayed_writes  0
Flush_commands  1
Handler_commit  0
Handler_delete  949
Handler_discover        0
Handler_read_first      1599
Handler_read_key        355904561
Handler_read_next       1142413734
Handler_read_prev       363834
Handler_read_rnd        7371541
Handler_read_rnd_next   587538060
Handler_rollback        161
Handler_update  20384
Handler_write   50259202
Key_blocks_not_flushed  47435
Key_blocks_unused       220362
Key_blocks_used 708736
Key_read_requests       3885623178
Key_reads       1106287
Key_write_requests      50896389
Key_writes      643557
Max_used_connections    39
Not_flushed_delayed_rows        0
Open_files      196
Open_streams    0
Open_tables     232
Opened_tables   238
Qcache_free_blocks      204
Qcache_free_memory      28672400
Qcache_hits     857901
Qcache_inserts  249443
Qcache_lowmem_prunes    63919
Qcache_not_cached       1030
Qcache_queries_in_cache 878
Qcache_total_blocks     2280
Questions       1222721
Rpl_status      NULL
Select_full_join        155
Select_full_range_join  0
Select_range    14658
Select_range_check      0
Select_scan     3788
Slave_open_temp_tables  0
Slave_retried_transactions      0
Slave_running   OFF
Slow_launch_threads     0
Slow_queries    4143
Sort_merge_passes       503
Sort_range      41071
Sort_rows       7353497
Sort_scan       5967
Table_locks_immediate   458067
Table_locks_waited      850
Threads_cached  14
Threads_connected       17
Threads_created 70
Threads_running 2
Uptime  444983

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

Reply via email to