Модераторы: skyboy
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Долго висит статус Sending data 
:(
    Опции темы
dimes
Дата 21.8.2006, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: 1
Всего: 14



Mysql 4.1.20

Есть таблица
Код

CREATE TABLE `click_words_date` (
 `date` date NOT NULL default '0000-00-00',
 `id_word` int(10) unsigned NOT NULL default '0',
 `searches` mediumint(8) unsigned NOT NULL default '0',
 `clicks` mediumint(8) unsigned NOT NULL default '0',
  KEY `date` (`date`,`id_word`),
  KEY `date_2` (`date`,`clicks`,`searches`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8


Кол-во строк в таблице около 9М

Выполняем запрос
Код

SELECT id_word, searches, clicks FROM click_words_date
WHERE date = '2006-08-20'
ORDER BY clicks DESC , searches DESC 
LIMIT 0,100


Все ок выполняеться почти мгновенно
EXPLAIN говорит
Код
 
select_type: SIMPLE
type: ref
key: date_2
key_len: 3
ref: const
rows: 1278673
Extra: Using where


Но!
Код

SELECT id_word, searches, clicks FROM click_words_date
WHERE date = '2006-08-20'
ORDER BY clicks DESC , searches DESC 
LIMIT 119910, 100

Выполняеться почти 20сек(все время со статусом "Sending data")

Чем дальше "листаешь" от первой страницы тем дольше выполняется запрос smile

Это так и должно быть или это из-за причудливых изгибом моих рук? smile

На сервере работает еще innoDB, о самом сервере могу сказать только что это дедик с 3Г памяти smile И не могу сказать что я очень уверен что сервер(mySQL) настроен оптимально smile Если нужно могу выложить избранные моменты из результата работы show variables или show status smile
PM ICQ   Вверх
Kesh
Дата 21.8.2006, 16:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



Давай variables...

Как вариант, можно попробовать отдельно ключики по date и (`clicks`,`searches`) сделать...


--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
dimes
Дата 21.8.2006, 17:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 249
Регистрация: 20.7.2004
Где: то около СПБ

Репутация: 1
Всего: 14



Цитата(Kesh @  21.8.2006,  17:59 Найти цитируемый пост)
Давай variables...




Код

back_log    50
basedir    /usr/
bdb_cache_size    8388600
bdb_home    /var/lib/mysql/
bdb_log_buffer_size    131072
bdb_logdir     
bdb_max_lock    10000
bdb_shared_data    OFF
bdb_tmpdir    /tmp/
binlog_cache_size    32768
bulk_insert_buffer_size    8388608
character_set_client    latin1
character_set_connection    latin1
character_set_database    utf8
character_set_results    latin1
character_set_server    utf8
character_set_system    utf8
character_sets_dir    /usr/share/mysql/charsets/
collation_connection    latin1_swedish_ci
collation_database    utf8_general_ci
collation_server    utf8_general_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    0
flush    OFF
flush_time    0
ft_boolean_syntax    + -><()~*:""&|
ft_max_word_len    84
ft_min_word_len    4
ft_query_expansion_limit    20
ft_stopword_file    (built-in)
group_concat_max_len    1024
have_archive    NO
have_bdb    YES
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_ndbcluster    NO
have_openssl    YES
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    20971520
innodb_autoextend_increment    8
innodb_buffer_pool_awe_mem_mb    0
innodb_buffer_pool_size    1572864000
innodb_data_file_path    ibdata1:1990M;ibdata2:1990M;ibdata3:100M:autoexten...
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    16777216
innodb_log_file_size    367001600
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    131072
key_buffer_size    805306368
key_cache_age_threshold    300
key_cache_block_size    1024
key_cache_division_limit    100
language    /usr/share/mysql/english/
large_files_support    ON
license    GPL
local_infile    ON
locked_in_memory    OFF
log    OFF
log_bin    OFF
log_error    /var/log/mysql/mysqld.err
log_slave_updates    OFF
log_slow_queries    OFF
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    100
max_delayed_threads    20
max_error_count    64
max_heap_table_size    16777216
max_insert_delayed_threads    20
max_join_size    4294967295
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    32
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    8192
net_read_timeout    30
net_retry_count    10
net_write_timeout    60
new    OFF
old_passwords    OFF
open_files_limit    1024
pid_file    /var/run/mysqld/mysqld.pid
port    3306
preload_buffer_size    32768
prepared_stmt_count    0
protocol_version    10
query_alloc_block_size    8192
query_cache_limit    1048576
query_cache_min_res_unit    4096
query_cache_size    0
query_cache_type    ON
query_cache_wlock_invalidate    OFF
query_prealloc_size    8192
range_alloc_block_size    2048
read_buffer_size    258048
read_only    OFF
read_rnd_buffer_size    520192
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/run/mysqld/mysqld.sock
sort_buffer_size    5242872
sql_mode     
sql_notes    ON
sql_warnings    ON
storage_engine    MyISAM
sync_binlog    0
sync_frm    ON
sync_replication    0
sync_replication_slave_id    0
sync_replication_timeout    0
system_time_zone    EDT
table_cache    256
table_type    MyISAM
thread_cache_size    8
thread_stack    196608
time_format    %H:%i:%s
time_zone    SYSTEM
tmp_table_size    134217728
tmpdir    /tmp/
transaction_alloc_block_size    8192
transaction_prealloc_size    4096
tx_isolation    REPEATABLE-READ
version    4.1.20
version_bdb    Sleepycat Software: Berkeley DB 4.1.24: (June 22, ...
version_comment    Gentoo Linux mysql-4.1.20
version_compile_machine    i386
version_compile_os    pc-linux-gnu
wait_timeout    28800


Добавлено @ 17:08 
Цитата(Kesh @  21.8.2006,  17:59 Найти цитируемый пост)
Как вариант, можно попробовать отдельно ключики по date и (`clicks`,`searches`) сделать...

А чем это поможет?

Это сообщение отредактировал(а) dimes - 21.8.2006, 17:07
PM ICQ   Вверх
Kesh
Дата 24.8.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Эксперт
Сообщений: 2488
Регистрация: 31.7.2002
Где: Германия, Saarbrü cken

Репутация: 15
Всего: 54



По поводу ключей...
Смотри, У тебя идет отдельно условие в WHERE и сортировка...

Цитата

Ниже приведены некоторые случаи, когда MySQL не может использовать индексы, чтобы выполнить ORDER BY (обратите внимание, что MySQL тем не менее будет использовать индексы, чтобы найти строки, соответствующие выражению WHERE):

    * Сортировка ORDER BY делается по нескольким ключам: SELECT * FROM t1 ORDER BY key1,key2
    * Сортировка ORDER BY делается, при использовании непоследовательных частей ключа: SELECT * FROM t1 WHERE key2=constant ORDER BY key_part2
    * Смешиваются ASC и DESC. SELECT * FROM t1 ORDER BY key_part1 DESC,key_part2 ASC
    * Для выборки строк и для сортировки ORDER BY используются разные ключи: SELECT * FROM t1 WHERE key2=constant ORDER BY key1
    * Связываются несколько таблиц, и столбцы, по которым делается сортировка ORDER BY, относятся не только к первой неконстантной (const) таблице, используемой для выборки строк (это первая таблица в выводе EXPLAIN, в которой не используется константный, const, метод выборки строк).
    * Имеются различные выражения ORDER BY и GROUP BY.
    * Используемый индекс таблицы имеет такой тип, который не обеспечивает сортированного хранения строк (как индекс HASH в таблицах HEAP).
    * Столбцы индекса могут содержать значения NULL, и используется ORDER BY ... DESC. Это объясняется тем, что в SQL значения NULL всегда сортируются в первую очередь, независимо от того, используется DESC или нет. 


Цитата

Чтобы сортировка ORDER BY выполнялась с большей скоростью, нужно сначала посмотреть, можно ли заставить MySQL использовать индексы взамен дополнительной фазы сортировки. Если это невозможно, то можно сделать следующее:

    * Увеличить значение переменной sort_buffer.
    * Увеличить значение переменной record_rnd_buffer.
    * Изменить переменную tmpdir, чтобы она указывала на выделенный диск с большим количеством свободного пространства. 


Цитата

Если LIMIT # используется с ORDER BY, MySQL закончит сортировку, как только найдет первые # строк, вместо того, чтобы сортировать всю таблицу.


Взято отсюда

5.2.7 Как MySQL оптимизирует ORDER BY
5.2.8 Как MySQL оптимизирует LIMIT



--------------------
user posted image
PM MAIL WWW ICQ Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | MySQL | Следующая тема »


 




[ Время генерации скрипта: 0.0552 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.