Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   mysql оптимизация на denwer (https://forum.antichat.xyz/showthread.php?t=140122)

agamerr 08.09.2009 11:58

mysql оптимизация на denwer
 
Проблема
Тормозит скрипт, долго выполняет работу,
100 слов ищеться около 30 сек, по таблице полмилиона записей

Исходные данныые
комп десктоп 2,5 celeron 1гб оперативной памяти, + denwer3 (denwer.ru)
использую класс, dbsimple (http://dklab.ru/lib/DbSimple/)


создаю таблицу по существу нужны 2 колонки (
1столбец - слово,
2столбец - цифра,
)

PHP код:

"CREATE TABLE $table2 ( 
ide INT(15) NOT NULL AUTO_INCREMENT, 
ones VARCHAR(30) NOT NULL, 
num INT(15) DEFAULT 1, 
UNIQUE KEY ide (ide) 
)CHARACTER SET utf8 COLLATE utf8_unicode_ci;"


после создания таблицы заполняю ее на полмилиона записей, здесь все норм

дальше начинаются проблемы
работа скрипта и трабла, следующая,

скрипт ищет слово в первом столбце
запрос делаю такой

PHP код:

$sID $DB->selectCell('SELECT num FROM table2 WHERE ones=?'$onesto); 

искать слов нужно много,
итого запускаю скрипт на поиск 100 слов ищеться около 30 сек это нормально?


что пробывал ?
решил настройть my.cnf


PHP код:

my.cnf

# Различные настройки, оптимизированные для небольшого объема памяти.
skip-locking
key_buffer            
42M
max_allowed_packet    
99M
table_cache           
4
sort_buffer_size      
12M
read_buffer_size      
12M
read_rnd_buffer_size  
12M
net_buffer_length     
12M
thread_stack          
12M 

php.ini
PHP код:

;;;;;;;;;;;;;;;;;;;
Resource Limits ;
;;;;;;;;;;;;;;;;;;;

max_execution_time 3000     Maximum execution time of each scriptin seconds
max_input_time 
6000    Maximum amount of time each script may spend parsing request data
;max_input_nesting_level 64 Maximum input variable nesting level
memory_limit 
500M      Maximum amount of memory a script may consume (128MB


проблема не решена скрипт грузит ц/п, и хреново пашет на мой взляд,
что можно изменить или оптимизировать
есть ли лечение?
I need help

FireFenix 08.09.2009 15:46

у мускуля 1 мега запрос быстрее 100 маленьких => делай выборку SELECT * FROM table WHERE column="word_1" OR column="word_2" OR ....

на пхп что-то в виде
PHP код:

<?php

$words 
= Array(); //массив слов

$query '';

foreach(
$words as $value)
{
  if (
strlen($query) > 0)
  {
    
$query .= ' OR ';
  }
  
  
$query .= 'column="' $value '"';
}

$sID $DB->selectCell('SELECT num FROM table2 WHERE' $query);  

?>

Если не волнует как данные хранятся..... то можно вначале все искомые слова сложить в таблицу и сделать JOIN

Gifts 08.09.2009 17:57

agamerr Главное - сделать индекс на столбец в котором ищете. Потом открыть глаза на прикрепленные темы. А дальше уже читать например такое: http://habrahabr.ru/blogs/mysql/20246/
FireFenix
PHP код:

$words = array('слово1','слово2');
$sID $DB->selectCell('SELECT num FROM table2 WHERE ones IN ("'.implode('","',array_map('mysql_real_escape_string',$words)).'")'


agamerr 09.09.2009 10:26

FireFenix, Gifts,
биг респект сейчас буду рыть,
что самое интересное написал на форум программистов,
нихрена толкового не посоветовали, :)

agamerr 09.09.2009 13:32

народ палю тему, порекомендовали погуглить по my-huge.ini
итого
в настройках my.ini

выставил такие,
skip-locking
key_buffer = 300M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
net_buffer_length = 33M
thread_stack = 33M
thread_cache_size = 8
sort_buffer_size = 30M
query_cache_size = 32M


500 запросов , база 1млн записей
скорость внимание 2 сек :cool:

m0Hze 09.09.2009 14:50

Цитата:

Сообщение от agamerr
народ палю тему, порекомендовали погуглить по my-huge.ini
итого
в настройках my.ini

выставил такие,
skip-locking
key_buffer = 300M
max_allowed_packet = 1M
table_cache = 512
sort_buffer_size = 2M
read_buffer_size = 2M
read_rnd_buffer_size = 8M
net_buffer_length = 33M
thread_stack = 33M
thread_cache_size = 8
sort_buffer_size = 30M
query_cache_size = 32M


500 запросов , база 1млн записей
скорость внимание 2 сек :cool:

Мда,некуевые настроечки.ТОлько вот вопрос,а на хочтинге ты тоже будеш править my.conf?
Или будеш на денвере держать
--
Тебе же дали наверху верные советы,зачем ты полез в насройки памяти.Не трогай их.Сделай как советовали по инексу,и большгим запросом.

agamerr 09.09.2009 15:26

это называется против лома нет приема

у меня скрипт десктопный, поэтому прокатит,
эти рекомендации годятся для серверов
с памятью от 1 гб

что касается рекомендаций
по индексу столбцов заморочился и скорее всего реализую просто интерсно насколько быстрее будет работать


Время: 16:58