#1 2011.08.16 01:52

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Помоги оптоимизировать запрос

Если это конечно возможно.
В общем следующий код должен выводить популярные или новые запросы в поиске.
Думал при записи запроса добавлять количество результатов но файлы добавляются каждых 5-10 мин.
И много вариантов будет не верно.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
<?php
        if (!$true) {
            
            $sort $_GET['sort'];
            if ($sort == 'date') {
                $order '`date`';
                $Themes->content .= '  <a href="/search/">Популярные запросы</a> / '."\n"
                                 .  '  <b>Последние запросы</b><br />'              ."\n";
            } else {
                $order '`count`';
                $Themes->content .= '  <b>Популярные запросы</b> / '                            ."\n"
                                 .  '  <a href="/search/?sort=date">Последние запросы</a><br />'."\n";
            }
            
            
            $navig = new Navig("SELECT * FROM `query`"$_GET['page'], '?page={page}' . (($sort == 'date')? '&amp;sort=date':''), 10);
            $q mysql_query("SELECT * FROM `query` ORDER BY {$order} DESC LIMIT " $navig->limit);
            while ($row mysql_fetch_array($q)) {
                $like_arr explode(', '$row['query']);
                $like '';
                foreach ($like_arr as $v) {
                    $v trim($v);
                    $like .= " `info` LIKE ('%$v%') &&";
                    
                }
                $like  substr($like0, -3);
                $query mysql_query("SELECT * FROM `video` WHERE{$like}");
                
                
                $Themes->content .= '  <div class="b"><img src="/themes/' $_SET->themes '/images/down.png" alt="image" />'
                    '<a href="/search/?query='urlencode($row['query']) .'"><b>' $row['query'] . '</b></a></div>'           "\n"
                                                                                                                                 "\n"
                    .'  <div class="c">'                                                                                         "\n";
                $Themes->content .= '   Результатов: 'mysql_num_rows($query) . '<br />'                                         ."\n"
                    .'   Запросов: ' $row['count'] . '<br />'                                                                  "\n"
                    .'  </div>'                                                                                                "\n\n";
            }
            $Themes->content .= $navig->jamp();
        }

Неактивен

#2 2011.08.16 10:31

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

прикрути Sphinx

Неактивен

#3 2011.08.22 11:46

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помоги оптоимизировать запрос

Паша слушай я чет ни как его не раздуплю.
Блин подключил статы, генерация страницы от 4 до 20 сек. (поиск в статы не включал)
Я вообще офигел. И это все базы забирают.
Стоит ли розбирать sphinx да и может отказаться от mysql и перейти на какую нить базу быстрее?
Но в половину я смогу оптимизировать код. Но не пойму почему один и тот самый запрос занимает то 1.5с то 8 сек. Из за чего это?

Отредактировано TLENS (2011.08.22 11:47)

Неактивен

#4 2011.08.22 12:02

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

для начала нужен сам запрос, explain его выполнения, структура бд, какие индексы стоят, кол-во записей в таблице?

Неактивен

#5 2011.08.23 12:24

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помоги оптоимизировать запрос

Код:

1
2
3
4
5
<?
$starttime = microtime(1);
$q = mysql_query("SELECT * FROM `video`");
 
echo round(microtime(1) - $starttime, 4);

0,3 - 2,5 сек.


Вложения

Отредактировано TLENS (2011.08.23 12:24)

Неактивен

#6 2011.08.23 19:53

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

не скриншот давай а вывод команды  SHOW CREATE TABLE а заодно EXPLAIN SELECT * FROM `video`

Неактивен

#7 2011.08.23 20:07

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помоги оптоимизировать запрос

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE `video` (
`id` int(11) unsigned NOT NULL default '0',
`name` varchar(512) NOT NULL default '',
`info` varchar(2048) NOT NULL,
`url_file` varchar(500) NOT NULL,
`url_flv` varchar(500) NOT NULL,
`size` varchar(255) NOT NULL default '',
`resolution` varchar(255) NOT NULL default '',
`length` varchar(255) NOT NULL default '',
`rating` int(11) unsigned NOT NULL default '0',
`date` int(11) unsigned NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

Добавлено спустя   2 минуты  2 секунды:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
array(20) {
[0]=>
string(1) "1"
["id"]=>
string(1) "1"
[1]=>
string(6) "SIMPLE"
["select_type"]=>
string(6) "SIMPLE"
[2]=>
string(5) "video"
["table"]=>
string(5) "video"
[3]=>
string(3) "ALL"
["type"]=>
string(3) "ALL"
[4]=>
NULL
["possible_keys"]=>
NULL
[5]=>
NULL
["key"]=>
NULL
[6]=>
NULL
["key_len"]=>
NULL
[7]=>
NULL
["ref"]=>
NULL
[8]=>
string(5) "73358"
["rows"]=>
string(5) "73358"
[9]=>
string(0) ""
["Extra"]=>
string(0) ""
}

Неактивен

#8 2011.08.23 23:01

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

что это за массив такой? плз, нормальный стринговый вывод.

Неактивен

#9 2011.08.24 14:33

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помоги оптоимизировать запрос

Паша я вот целую ночь продолбался над оптимизацией то сейчас генерация 0.002 - 0.8 сек но в основном 0.006 - 0.08. это нормально?
Просто уже под утро пришла идея каждые 10 - 15 мин делать хеш базы данных.
т.е.

Код:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
$q mysql_query("SELECT * FROM `video` ORDER BY `rating` DESC");
set_time_limit(999);
$i 1;
$p 1;
$arr = array();
while ($row mysql_fetch_array($q)) {
    $arr[] = array(
        'id' => $row['id'],
        'name' => $row['name'],
        'info' => $row['info'],
        'length' => $row['length'],
        'size' => $row['size'],
        'rating' => $row['rating'],
        'date' => $row['date'],
        'resolution' => $row['resolution']
    );
    if ($i == 10) {
        file_put_contents('./data/' $p '.array'serialize($arr));
        unset($arr);
        $i 1;
        $p++;
    } else {
        $i++;
    }
}

один такой запрос занимает 4 сек.
+ еже один сортированный по дате 7к файлов. И пару там малых по рейтингам.
в  целом 10-15 сек. хеша. Но вывод пользователю занимает 0.0002 - 5 сек.
Мне что интересно это вобще правильном или оно лишнее?
Просто места все равно десятки гигов лишних.

Отредактировано TLENS (2011.08.24 14:34)

Неактивен

#10 2011.08.25 11:33

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

да, это стандартное кэширование. только лучше взять какую-нить готовую библиотеку, типа Cache_Lite

Неактивен

#11 2011.08.25 12:38

TLENS
Moderator
Откуда: Украина
Зарегистрирован: 2009.04.05
Сообщений: 2402
Карма: 14
Профиль

Re: Помоги оптоимизировать запрос

Слушай исправь 'posted' все на свой ник пишет. Да и добавь колонку box

Неактивен

#12 2011.08.25 12:39

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

это я торможу? или можно вот это:

Код:

1
2
3
4
5
6
7
8
9
10
11
12
<?php
    $arr[] = array(
        'id' => $row['id'],
        'name' => $row['name'],
        'info' => $row['info'],
        'length' => $row['length'],
        'size' => $row['size'],
        'rating' => $row['rating'],
        'date' => $row['date'],
        'resolution' => $row['resolution']
    );
?>

заменить просто на:

Код:

1
2
3
<?php
$arr[] = $row;
?>

Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#13 2011.08.25 12:39

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

что??

Неактивен

#14 2011.08.25 12:41

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Gemorroj написал:

да, это стандартное кэширование. только лучше взять какую-нить готовую библиотеку, типа Cache_Lite

а зачем использовать такой набор, если надо всего лишь массив сохранить в файл и потом получить?


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#15 2011.08.25 12:46

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

а удалять этот набор по прошествию какого-то времени? Cache_Lite хорошая легкая либа. Смысла использовать всето нее или аналогов свои кастомные решения не вижу.

Неактивен

#16 2011.08.25 12:54

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Gemorroj написал:

а удалять этот набор по прошествию какого-то времени? Cache_Lite хорошая легкая либа. Смысла использовать всето нее или аналогов свои кастомные решения не вижу.

ну так он самозаменяется же! у файла статическое название './data/' . $p . '.array' и меняются только данные в нем!


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#17 2011.08.25 12:57

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Nu3oN, ну, в этом случае да. Но со временем различного рода кэширований получится много. Для этого нужно использовать 1 прослойку. Эта 1 прослойка уже есть, и в нормальной реализации.

Неактивен

#18 2011.08.25 13:01

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Gemorroj написал:

Nu3oN, ну, в этом случае да. Но со временем различного рода кэширований получится много. Для этого нужно использовать 1 прослойку. Эта 1 прослойка уже есть, и в нормальной реализации.

Я использую для этого свою реализацию, мне так проще! одна точка входа, сохранение, замена, удаление и проверка времени!
Тем более Cache_Lite использует еще и библу PEAR


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#19 2011.08.26 13:24

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Nu3oN, ты уверен что твоя реализация лучше чем PEAR?
Все что ты перечислил есть и в Cache_Lite.

Неактивен

#20 2011.08.26 20:57

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Gemorroj написал:

Nu3oN, ты уверен что твоя реализация лучше чем PEAR?
Все что ты перечислил есть и в Cache_Lite.

думаю да! в плане производительности да! моему классу не мешают сторонние методы, которые мне не нужны smile


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

#21 2011.08.27 19:42

Gemorroj
Administrator
Откуда: Белоруссия
Зарегистрирован: 2007.11.03
Сообщений: 6585
Карма: 107
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Nu3oN, сторонние методы никому не мешают. Кол-во функций/методов не влияет на производительность. Это равносильно тому, что код без комментариев - быстрее.

Неактивен

#22 2011.08.28 11:55

Nu3oN
Moderator
Откуда: БелгородЭ
Зарегистрирован: 2010.04.28
Сообщений: 869
Карма: 11
Профиль Веб-сайт

Re: Помоги оптоимизировать запрос

Все методы взаимосвязаны smile


Я буду лучше голоден, но между креслом и рулем и на дороге.

Неактивен

Дополнительно

forum.wapinet.ru

PunBB Mod v0.6.2
0.018 s