Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / тюнинг запроса / 11 сообщений из 11, страница 1 из 1
12.11.2015, 18:15:18
    #39102220
beginner_silent
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
Помогите пожалуйтса. Можно ли как-то ускорить такой запрос:

Код: sql
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.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
# Query 1: 0.35 QPS, 3.23x concurrency, ID 0x4E3DA202FE28609F at byte 94967961
# This item is included in the report because it matches --limit.
# Scores: V/M = 38.86
# Time range: 2015-11-12 02:39:35 to 16:06:20
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Count          6   16809
# Exec time     53 156547s    33us    181s      9s     47s     19s   253ms
# Lock time     44  35122s       0     87s      2s     16s      8s   167us
# Rows sent     38 857.89k       0     101   52.26   49.17   12.04   49.17
# Rows examine  43   2.11G       0   1.29M 131.72k   1.09M 315.84k   2.76k
# Rows affecte   0       0       0       0       0       0       0       0
# Bytes sent    43 599.71M       0 379.10k  36.53k  59.57k  12.55k  33.17k
# Merge passes   0       0       0       0       0       0       0       0
# Tmp tables    33  29.69k       0       3    2.09    2.90    0.35    1.96
# Tmp disk tbl  54  29.69k       0       3    2.09    2.90    0.35    1.96
# Tmp tbl size  38  22.36G       0  62.77M   1.57M   4.93M   7.25M  34.83k
# Query size    23  12.54M     780     786  782.41  755.64       0  755.64
# Boolean:
# Filesort      99% yes,   0% no
# Full scan     99% yes,   0% no
# QC Hit         0% yes,  99% no
# Tmp table     99% yes,   0% no
# Tmp table on  99% yes,   0% no
# String:
# Databases    test1
# Hosts        127.0.0.1
# Last errno   0 (16681/99%), 1160 (72/0%), 1030 (35/0%)... 2 more
# Users        test1
# Query_time distribution
#   1us
#  10us  #
# 100us  #
#   1ms  #
#  10ms  ################################################################
# 100ms  ###########################################################
#    1s  #######################
#  10s+  ####################################################
# Tables
#    SHOW TABLE STATUS FROM `test1` LIKE 'posts'\G
#    SHOW CREATE TABLE `test1`.`posts`\G
#    SHOW TABLE STATUS FROM `test1` LIKE 'niche_posts'\G
#    SHOW CREATE TABLE `test1`.`niche_posts`\G
#    SHOW TABLE STATUS FROM `test1` LIKE 'images'\G
#    SHOW CREATE TABLE `test1`.`images`\G
#    SHOW TABLE STATUS FROM `test1` LIKE 'videos'\G
#    SHOW CREATE TABLE `test1`.`videos`\G
# EXPLAIN /*!50100 PARTITIONS*/
select  p1.*, i.id as iid, i.image_name AS iname, v.id as vid, v.video_name as vname, v.cover_name as vcover from (
                SELECT
                    p.id as pid, p.title as ptitle, p.location as plocation, p.map as pmap, p.age as page,
                    p.createdon as pcreatedon, p.phone as phone, p.sponsor as sponsored, p.body as pbody

                FROM  posts p
                INNER JOIN niche_posts np ON np.posts_id = p.id AND np.niche_id = 19
                WHERE p.city_id = 7  AND p.show = 1
                    ORDER  BY p.createdon DESC LIMIT 51 OFFSET 150) as p1
                LEFT JOIN images i ON  i.posts_id = p1.pid
                LEFT JOIN videos v ON  v.posts_id = p1.pid  GROUP  BY p1.pid  ORDER  BY p1.pcreatedon DESC\G

+----+-------------+------------+------------+--------+-----------------------------------+-----------------+---------+----------------------------------+--------+---------------------------------+
| id | select_type | table      | partitions | type   | possible_keys                     | key             | key_len | ref                              | rows   | Extra                           |
+----+-------------+------------+------------+--------+-----------------------------------+-----------------+---------+----------------------------------+--------+---------------------------------+
|  1 | PRIMARY     | <derived2> | NULL       | ALL    | NULL                              | NULL            | NULL    | NULL                             |    201 | Using temporary; Using filesort |
|  1 | PRIMARY     | i          | NULL       | ref    | posts_id                          | posts_id        | 4       | p1.pid                           |      6 | NULL                            |
|  1 | PRIMARY     | v          | NULL       | ref    | videos_posts_id                   | videos_posts_id | 4       | p1.pid                           |      1 | NULL                            |
|  2 | DERIVED     | np         | NULL       | ref    | PRIMARY,niche_id,posts_id         | niche_id        | 1       | const                            | 622786 | Using temporary; Using filesort |
|  2 | DERIVED     | p          | NULL       | eq_ref | PRIMARY,city_id_source_createdonn | PRIMARY         | 4       | test1.np.posts_id                |      1 | Using where                     |
+----+-------------+------------+------------+--------+-----------------------------------+-----------------+---------+----------------------------------+--------+---------------------------------+
5 rows in set (0.01 sec)
...
Рейтинг: 0 / 0
12.11.2015, 18:37:09
    #39102247
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
beginner_silent
Код: sql
1.
i.id as iid, i.image_name AS iname, v.id as vid, v.video_name as vname, v.cover_name as vcover

Вы в курсе, что после GROUP BY p1.pid в этих полях может быть совсем не то, что нужно?
...
Рейтинг: 0 / 0
12.11.2015, 18:56:01
    #39102266
begginer_silent
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
miksoft,

к сожалению не знаю - запрос не мой .
Но на экран он выдает что-то нормальное, содержание похоже на название столбцов.
...
Рейтинг: 0 / 0
12.11.2015, 19:07:29
    #39102271
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
begginer_silentНо на экран он выдает что-то нормальное, содержание похоже на название столбцов.Содержание-то будет похоже, столбцы будут правильные. А вот записи - не факт.

Текст запроса вы можете править?
...
Рейтинг: 0 / 0
12.11.2015, 19:34:17
    #39102302
beginner_silent
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
miksoft,

Да, сам запрос я могу заменить другим.
...
Рейтинг: 0 / 0
12.11.2015, 19:42:47
    #39102309
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
А какое время выполнения запроса сейчас и какое нужно получить?

И какова роль таблицы niche_posts в этом запросе?
...
Рейтинг: 0 / 0
12.11.2015, 19:53:17
    #39102314
begginer_silent
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
miksoft,

Код: sql
1.
2.
3.
# Attribute    pct   total     min     max     avg     95%  stddev  median
# ============ === ======= ======= ======= ======= ======= ======= =======
# Exec time     53 156547s    33us    181s      9s     47s     19s   253ms



в среднем сейчас порядка 40 секунд.

Вообще меня смущает разброс по времени min 33us, max - 181 sec

но там OFFSET может быть разный - возможно что время от этого зависит.

Хотелось бы в пределах 10 секунд.

Про niche_posts пока не могу сказать, сейчас попробую разобраться.
...
Рейтинг: 0 / 0
12.11.2015, 19:56:42
    #39102320
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
begginer_silentВообще меня смущает разброс по времени min 33us, max - 181 sec33 мкс - это, наверное, кэш результатов запросов срабатывает.
...
Рейтинг: 0 / 0
12.11.2015, 19:59:55
    #39102322
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
posts и niche_posts - это вообще таблицы? не VIEW?
...
Рейтинг: 0 / 0
12.11.2015, 20:03:48
    #39102325
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
miksoftposts и niche_posts - это вообще таблицы? не VIEW?Наверное, ерунду спросил.
Но, на всякий случай, покажите SHOW CREATE TABLE для них.
...
Рейтинг: 0 / 0
12.11.2015, 20:51:05
    #39102364
beginer_silent
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тюнинг запроса
miksoft,

Код: sql
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.
| posts | CREATE TABLE `posts` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `title` varchar(250) CHARACTER SET utf8 NOT NULL,
  `safe_title` varchar(250) COLLATE utf8_bin NOT NULL,
  `age` tinyint(3) unsigned NOT NULL,
  `location` varchar(100) COLLATE utf8_bin NOT NULL,
  `phone` varchar(100) COLLATE utf8_bin NOT NULL,
  `body` mediumtext CHARACTER SET utf8 NOT NULL,
  `createdon` int(10) unsigned NOT NULL,
  `source` tinyint(3) unsigned NOT NULL,
  `link` varchar(1024) COLLATE utf8_bin NOT NULL,
  `city_id` int(11) NOT NULL,
  `haspic` tinyint(1) NOT NULL,
  `show` tinyint(1) NOT NULL,
  `sponsor` tinyint(1) NOT NULL DEFAULT '0',
  `createdsys` double DEFAULT NULL,
  `reply` tinyint(1) NOT NULL DEFAULT '0',
  `complete` tinyint(1) NOT NULL DEFAULT '0',
  `repost` tinyint(1) NOT NULL DEFAULT '0',
  `internal` tinyint(1) NOT NULL DEFAULT '0',
  `views` int(10) unsigned NOT NULL DEFAULT '0',
  `map` char(32) COLLATE utf8_bin DEFAULT NULL,
  `escort_id` int(10) DEFAULT NULL,
  `repost_days` int(2) DEFAULT NULL,
  `repost_times` varchar(128) COLLATE utf8_bin DEFAULT NULL,
  `public_time` int(10) DEFAULT NULL,
  `published_times` int(2) DEFAULT '0',
  `need_publish` tinyint(1) DEFAULT '0',
  PRIMARY KEY (`id`),
  KEY `createdsys` (`createdsys`),
  KEY `city_id_source_createdon` (`city_id`,`source`,`createdon`),
  KEY `id_city_id` (`id`,`city_id`),
  KEY `indx_escort_id` (`escort_id`),
  KEY `city_id_show_createdon` (`city_id`,`show`,`createdon`),
  KEY `indx_city_id_show_id_createdon` (`city_id`,`show`,`id`,`createdon`),
  KEY `indx_city_id_source_show_id_createdon` (`city_id`,`source`,`show`,`id`,`createdon`)
) ENGINE=MyISAM AUTO_INCREMENT=10294501 DEFAULT CHARSET=utf8 COLLATE=utf8_bin |



Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
 SHOW CREATE TABLE niche_posts;
+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table       | Create Table                                                                                                                                                                                                                                             |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| niche_posts | CREATE TABLE `niche_posts` (
  `niche_id` tinyint(3) unsigned NOT NULL,
  `posts_id` int(10) unsigned NOT NULL,
  PRIMARY KEY (`posts_id`,`niche_id`),
  KEY `niche_id` (`niche_id`),
  KEY `posts_id` (`posts_id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 |
+-------------+----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.02 sec)
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / тюнинг запроса / 11 сообщений из 11, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]