SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 04.03.2014 11:12:35

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Битрикс + MySQL на скромном железе = медленные запросы

Приветствую всех на этом форуме!

Сразу к делу:

Проблема - при выборке из таблицы каталога с примерно 60000 наименований, запрос "пробегает" по таблице каталога несколько раз. Скорость запросов варьируется, как правило ищатся артикулы от 6 до 25 буквенно-символьных комбинаций. Средняя величина ожидания пользователя 8 -10 секунд на один запрос в поисковую систему. Каталог не имеет изображений, вывод данных пользователю представляется в виде таблицы, где фиксированное кол-во колонок - 7, и найденные соответствия поисковому запросу построчно.
Очень надо найти узкое место, для этого прошу вашей оценки. Основной вопрос - есть ли возможность перенастроить буферы и конфигурацию MySQL в целом,
либо необходимо расширить возможности железа, либо попытаться переписать запросы (позволит ли такое Битрикс?) чтобы сократить время оиждания?
Статические страницы отрабатывают в среднем за 0,02 сек. Но как мне объяснили разработчики, в БД в таблице каталога нет ни индексов, и она не кэшируется.
Очень хочется максимально сократить время ожидания (до <1 секунды), я как админ, могу лишь предложить другое железо, память проц все дела.
В MySQL указано значение max_connections равным 151, нужно ли столько при посещаемости 3-5 одновременных пользователей на сайте, подозреваю это значение нежно снизить?
К великому сожалению нет возможности проконсультироваться с грамотными DBA, поэтому пишу сюда. Спасибо за ваши ответы!



Хостинг VPS - 4ГБ RAM
Apache, MySQL 5.1.73 (InnoDB)
CMS - 1С-Битрикс: Управление сайтом 14.0.10 - генерирует запросы SQL сама.

Файл my.cnf - который применен сейчас.

[mysqld]
local-infile=0
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
user=mysql
# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0
transaction-isolation = READ-COMMITTED

# Cache parameters
query_cache_size = 64M
table_open_cache = 4096
thread_cache_size = 32
key_buffer_size = 64M
sort_buffer_size = 2M
read_buffer_size = 8M
thread_stack = 256K
join_buffer_size = 2M

# Parameters for temporary tables
tmpdir = /tmp
max_heap_table_size    = 32M
tmp_table_size = 32M

# InnoDB parameters
innodb_buffer_pool_size    = 768M
innodb_additional_mem_pool_size=128M
innodb_file_io_threads=8
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 192M
innodb_flush_method = O_DIRECT
innodb_log_buffer_size=16M
innodb_thread_concurrency=8

[mysqld_safe]
log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid
innodb_buffer_pool_size    = 780M
innodb_additional_mem_pool_size=32M
innodb_file_io_threads=8
innodb_flush_log_at_trx_commit = 2
innodb_log_file_size = 64M
innodb_flush_method = O_DIRECT
innodb_log_buffer_size=16M
innodb_thread_concurrency=8

Пример запроса, который отрабатывает за 19 секунд (просьба сильно не пинать):

SELECT
   BE.ID as ID,
   BE.IBLOCK_ID as IBLOCK_ID,
   BE.CODE as CODE,
   BE.XML_ID as XML_ID,
   BE.NAME as NAME,
   BE.ACTIVE as ACTIVE,
   IF(
      EXTRACT(HOUR_SECOND FROM
            BE.ACTIVE_FROM)>0,
      DATE_FORMAT(
         BE.ACTIVE_FROM,
         '%d.%m.%Y %H:%i:%s'
      ),
      DATE_FORMAT(
         BE.ACTIVE_FROM,
         '%d.%m.%Y'
      )
   ) as DATE_ACTIVE_FROM,
   IF(
      EXTRACT(HOUR_SECOND
      FROM
         BE.ACTIVE_TO)>0,
      DATE_FORMAT(
         BE.ACTIVE_TO,
         '%d.%m.%Y %H:%i:%s'
      ),
      DATE_FORMAT(
         BE.ACTIVE_TO,
         '%d.%m.%Y'
      )
   ) as DATE_ACTIVE_TO,
   BE.SORT as SORT,
   BE.PREVIEW_TEXT as PREVIEW_TEXT,
   BE.PREVIEW_TEXT_TYPE as PREVIEW_TEXT_TYPE,
   BE.DETAIL_TEXT as DETAIL_TEXT,
   BE.DETAIL_TEXT_TYPE as DETAIL_TEXT_TYPE,
   DATE_FORMAT(
      BE.DATE_CREATE,
      '%d.%m.%Y %H:%i:%s'
   ) as DATE_CREATE,
   BE.CREATED_BY as CREATED_BY,
   DATE_FORMAT(
      BE.TIMESTAMP_X,
      '%d.%m.%Y %H:%i:%s'
   ) as TIMESTAMP_X,
   BE.MODIFIED_BY as MODIFIED_BY,
   BE.TAGS as TAGS,
   BE.IBLOCK_SECTION_ID as IBLOCK_SECTION_ID,
   B.DETAIL_PAGE_URL as DETAIL_PAGE_URL,
   BE.DETAIL_PICTURE as DETAIL_PICTURE,
   BE.PREVIEW_PICTURE as PREVIEW_PICTURE,
   L.DIR as LANG_DIR,
   FPV0.VALUE as PROPERTY_CML2_ARTICLE_VALUE,
   FPV0.ID as PROPERTY_CML2_ARTICLE_VALUE_ID,
   BE.XML_ID as EXTERNAL_ID,
   B.IBLOCK_TYPE_ID as IBLOCK_TYPE_ID,
   B.CODE as IBLOCK_CODE,
   B.XML_ID as IBLOCK_EXTERNAL_ID,
   B.LID as LID,
   CAT_P9.ID as CATALOG_PRICE_ID_9,
   CAT_P9.CATALOG_GROUP_ID as CATALOG_GROUP_ID_9,
   CAT_P9.PRICE as CATALOG_PRICE_9,
   CAT_P9.CURRENCY as CATALOG_CURRENCY_9,
   CAT_P9.QUANTITY_FROM as CATALOG_QUANTITY_FROM_9,
   CAT_P9.QUANTITY_TO as CATALOG_QUANTITY_TO_9,
   'Розничная цена' as CATALOG_GROUP_NAME_9,
   'Y' as CATALOG_CAN_ACCESS_9,
   'Y' as CATALOG_CAN_BUY_9,
   CAT_P9.EXTRA_ID as CATALOG_EXTRA_ID_9,
   CAT_PR.QUANTITY as CATALOG_QUANTITY,
   IF (
      CAT_PR.QUANTITY_TRACE = 'D',
      'N',
      CAT_PR.QUANTITY_TRACE
   ) as CATALOG_QUANTITY_TRACE,
   CAT_PR.QUANTITY_TRACE as CATALOG_QUANTITY_TRACE_ORIG,
   IF (
      CAT_PR.CAN_BUY_ZERO = 'D',
      'N',
      CAT_PR.CAN_BUY_ZERO
   ) as CATALOG_CAN_BUY_ZERO,
   IF (
      CAT_PR.NEGATIVE_AMOUNT_TRACE = 'D',
      'N',
      CAT_PR.NEGATIVE_AMOUNT_TRACE
   ) as CATALOG_NEGATIVE_AMOUNT_TRACE,
   IF (
      CAT_PR.SUBSCRIBE = 'D',
      'Y',
      CAT_PR.SUBSCRIBE
   ) as CATALOG_SUBSCRIBE,
   IF (
      CAT_PR.QUANTITY > 0
      OR IF (
         CAT_PR.QUANTITY_TRACE = 'D',
         'N',
         CAT_PR.QUANTITY_TRACE
      ) = 'N'
      OR IF (
         CAT_PR.CAN_BUY_ZERO = 'D',
         'N',
         CAT_PR.CAN_BUY_ZERO
      ) = 'Y',
      'Y',
      'N'
   ) as CATALOG_AVAILABLE,
   CAT_PR.WEIGHT as CATALOG_WEIGHT,
   CAT_PR.WIDTH as CATALOG_WIDTH,
   CAT_PR.LENGTH as CATALOG_LENGTH,
   CAT_PR.HEIGHT as CATALOG_HEIGHT,
   CAT_PR.MEASURE as CATALOG_MEASURE,
   CAT_VAT.RATE as CATALOG_VAT,
   CAT_PR.VAT_INCLUDED as CATALOG_VAT_INCLUDED,
   CAT_PR.PRICE_TYPE as CATALOG_PRICE_TYPE,
   CAT_PR.RECUR_SCHEME_TYPE as CATALOG_RECUR_SCHEME_TYPE,
   CAT_PR.RECUR_SCHEME_LENGTH as CATALOG_RECUR_SCHEME_LENGTH,
   CAT_PR.TRIAL_PRICE_ID as CATALOG_TRIAL_PRICE_ID,
   CAT_PR.WITHOUT_ORDER as CATALOG_WITHOUT_ORDER,
   CAT_PR.SELECT_BEST_PRICE as CATALOG_SELECT_BEST_PRICE,
   CAT_PR.PURCHASING_PRICE as CATALOG_PURCHASING_PRICE,
   CAT_PR.PURCHASING_CURRENCY as CATALOG_PURCHASING_CURRENCY,
   CAT_PR.TYPE as CATALOG_TYPE
FROM
   b_iblock B
   INNER JOIN b_lang L ON
      B.LID = L.LID
   INNER JOIN b_iblock_element BE ON
      BE.IBLOCK_ID = B.ID
   LEFT JOIN b_iblock_property FP0 ON
      FP0.IBLOCK_ID = B.ID
      AND FP0.CODE = 'CML2_ARTICLE'
   LEFT JOIN b_iblock_element_property FPV0 ON
      FPV0.IBLOCK_PROPERTY_ID = FP0.ID
      AND FPV0.IBLOCK_ELEMENT_ID = BE.ID
   LEFT JOIN b_catalog_price CAT_P9 ON
      (
         CAT_P9.PRODUCT_ID = BE.ID
         AND CAT_P9.CATALOG_GROUP_ID = 9
      )
      AND (
         (
            CAT_P9.QUANTITY_FROM <= 1
            OR CAT_P9.QUANTITY_FROM IS NULL
         )
         AND (
            CAT_P9.QUANTITY_TO >= 1
            OR CAT_P9.QUANTITY_TO IS NULL
         )
      )
   LEFT JOIN b_catalog_product CAT_PR ON
      (CAT_PR.ID = BE.ID)
   LEFT JOIN b_catalog_iblock CAT_IB ON
      (
         (
            CAT_PR.VAT_ID IS NULL
            OR CAT_PR.VAT_ID = 0
         )
         AND CAT_IB.IBLOCK_ID = BE.IBLOCK_ID
      )
   LEFT JOIN b_catalog_vat CAT_VAT ON
      (
         CAT_VAT.ID = IF(
            CAT_PR.VAT_ID IS NULL
            OR CAT_PR.VAT_ID = 0
         ),
         CAT_IB.VAT_ID,
         CAT_PR.VAT_ID
      )
WHERE
   1 = 1
   AND (
      (BE.IBLOCK_ID = '3')
      AND (
         EXISTS (
            SELECT
               IBLOCK_ID
            FROM
               b_iblock_site
            WHERE
               IBLOCK_ID = B.ID
               AND (SITE_ID = 's1')
         )
      )
      AND (B.ACTIVE = 'Y')
      AND (
         (
            BE.ACTIVE_TO >= now()
            OR BE.ACTIVE_TO IS NULL
         )
         AND (
            BE.ACTIVE_FROM <= now()
            OR BE.ACTIVE_FROM IS NULL
         )
      )
      AND (BE.ACTIVE = 'Y')
      AND (1 = 1)
   )
   AND (
      BE.WF_STATUS_ID = 1
      AND BE.WF_PARENT_ELEMENT_ID IS NULL
   )
   AND (
      B.ID IN (
         SELECT
            IBLOCK_ID
         FROM
            b_iblock_group IBG
         WHERE
            IBG.GROUP_ID IN (2)
            AND IBG.PERMISSION >= 'R'
            AND (
               IBG.PERMISSION = 'X'
               OR B.ACTIVE = 'Y'
            )
      )
      OR (
         B.RIGHTS_MODE = 'E'
         AND EXISTS (
            SELECT
               ER.ELEMENT_ID
            FROM
               b_iblock_element_right ER
               INNER JOIN b_iblock_right IBR ON
                  IBR.ID = ER.RIGHT_ID
               INNER JOIN b_user_access UA ON
                  UA.ACCESS_CODE = IBR.GROUP_CODE
                  AND UA.USER_ID = 0
            WHERE
               ER.ELEMENT_ID = BE.ID
               AND IBR.OP_EREAD = 'Y'
         )
      )
   )
ORDER BY
   FPV0.VALUE DESC,
   BE.ID DESC
LIMIT 58550,
10

Отредактированно Punkt (04.03.2014 11:52:33)

Неактивен

 

#2 04.03.2014 12:05:02

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Битрикс + MySQL на скромном железе = медленные запросы

Покажите определения таблиц входящих в этот запрос:
show create table b_iblock;
show create table b_lang;
...

и план запроса, т.е.
explain extended ваш запрос \G
show warnings \G


Запрос содержит независимый IN подзапрос, но в вашей версии он будет выполняться для каждой строки внешнего запроса. Попробуйте выполнить запрос на более новой версии (MySQL 5.6 или MariaDB 5.3 и выше)

Неактивен

 

#3 04.03.2014 12:32:34

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

vasya написал:

Покажите определения таблиц входящих в этот запрос:
show create table b_iblock;
show create table b_lang;
...

Из всего FROM где есть INNER JOIN и LEFT JOIN?

vasya написал:

и план запроса, т.е.
explain extended ваш запрос \G
show warnings \G

Это две разные комманды, свой запрос надо вставить только в explain или в show тоже?

Неактивен

 

#4 04.03.2014 12:42:47

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

CREATE TABLE `b_iblock` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `IBLOCK_TYPE_ID` varchar(50) COLLATE utf8_unicode_ci NOT NULL,  `LID` char(2) COLLATE utf8_unicode_ci NOT NULL,  `CODE` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,  `NAME` varchar(255) COLLATE utf8_unicode_ci NOT NULL,  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `SORT` int(11) NOT NULL DEFAULT '500',  `LIST_PAGE_URL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `DETAIL_PAGE_URL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `SECTION_PAGE_URL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `PICTURE` int(18) DEFAULT NULL,  `DESCRIPTION` text COLLATE utf8_unicode_ci,  `DESCRIPTION_TYPE` char(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',  `RSS_TTL` int(11) NOT NULL DEFAULT '24',  `RSS_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `RSS_FILE_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `RSS_FILE_LIMIT` int(11) DEFAULT NULL,  `RSS_FILE_DAYS` int(11) DEFAULT NULL,  `RSS_YANDEX_ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `XML_ID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,  `INDEX_ELEMENT` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `INDEX_SECTION` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `WORKFLOW` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `BIZPROC` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `SECTION_CHOOSER` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `LIST_MODE` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `RIGHTS_MODE` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `VERSION` int(11) NOT NULL DEFAULT '1',  `LAST_CONV_ELEMENT` int(11) NOT NULL DEFAULT '0',  `SOCNET_GROUP_ID` int(18) DEFAULT NULL,  `EDIT_FILE_BEFORE` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `EDIT_FILE_AFTER` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `SECTIONS_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,  `SECTION_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,  `ELEMENTS_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,  `ELEMENT_NAME` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,  `SECTION_PROPERTY` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  PRIMARY KEY (`ID`),  KEY `ix_iblock` (`IBLOCK_TYPE_ID`,`LID`,`ACTIVE`)) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_lang` (  `LID` char(2) COLLATE utf8_unicode_ci NOT NULL,  `SORT` int(18) NOT NULL DEFAULT '100',  `DEF` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `NAME` varchar(50) COLLATE utf8_unicode_ci NOT NULL,  `DIR` varchar(50) COLLATE utf8_unicode_ci NOT NULL,  `FORMAT_DATE` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,  `FORMAT_DATETIME` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,  `WEEK_START` int(11) DEFAULT NULL,  `CHARSET` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `LANGUAGE_ID` char(2) COLLATE utf8_unicode_ci NOT NULL,  `DOC_ROOT` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `DOMAIN_LIMITED` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `SERVER_NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `SITE_NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `EMAIL` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `FORMAT_NAME` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `CULTURE_ID` int(11) DEFAULT NULL,  PRIMARY KEY (`LID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Неактивен

 

#5 04.03.2014 12:51:23

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

phpmyadmin
Show warnings показал следующее:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT BE.ID as ID, BE.IBLOCK_ID as IBLOCK_ID, BE.CODE as CODE, ' at line 2

Неактивен

 

#6 04.03.2014 12:52:52

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

phpmyadmin
Show warnings показал следующее:

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '), CAT_IB.VAT_ID, CAT_PR.VAT_ID ) WHERE 1 = 1 ' at line 166

Неактивен

 

#7 04.03.2014 13:01:55

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Битрикс + MySQL на скромном железе = медленные запросы

Punkt написал:

vasya написал:

Покажите определения таблиц входящих в этот запрос:
show create table b_iblock;
show create table b_lang;
...

Из всего FROM где есть INNER JOIN и LEFT JOIN?

Да, для всех таблиц.


Punkt написал:

vasya написал:

и план запроса, т.е.
explain extended ваш запрос \G
show warnings \G

Это две разные комманды, свой запрос надо вставить только в explain или в show тоже?

Только в explain.

Неактивен

 

#8 04.03.2014 18:40:16

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

CREATE TABLE `b_iblock_element` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `TIMESTAMP_X` datetime DEFAULT NULL,  `MODIFIED_BY` int(18) DEFAULT NULL,  `DATE_CREATE` datetime DEFAULT NULL,  `CREATED_BY` int(18) DEFAULT NULL,  `IBLOCK_ID` int(11) NOT NULL DEFAULT '0',  `IBLOCK_SECTION_ID` int(11) DEFAULT NULL,  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `ACTIVE_FROM` datetime DEFAULT NULL,  `ACTIVE_TO` datetime DEFAULT NULL,  `SORT` int(11) NOT NULL DEFAULT '500',  `NAME` varchar(255) COLLATE utf8_unicode_ci NOT NULL,  `PREVIEW_PICTURE` int(18) DEFAULT NULL,  `PREVIEW_TEXT` text COLLATE utf8_unicode_ci,  `PREVIEW_TEXT_TYPE` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',  `DETAIL_PICTURE` int(18) DEFAULT NULL,  `DETAIL_TEXT` longtext COLLATE utf8_unicode_ci,  `DETAIL_TEXT_TYPE` varchar(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',  `SEARCHABLE_CONTENT` text COLLATE utf8_unicode_ci,  `WF_STATUS_ID` int(18) DEFAULT '1',  `WF_PARENT_ELEMENT_ID` int(11) DEFAULT NULL,  `WF_NEW` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `WF_LOCKED_BY` int(18) DEFAULT NULL,  `WF_DATE_LOCK` datetime DEFAULT NULL,  `WF_COMMENTS` text COLLATE utf8_unicode_ci,  `IN_SECTIONS` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `XML_ID` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `CODE` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `TAGS` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,  `WF_LAST_HISTORY_ID` int(11) DEFAULT NULL,  `SHOW_COUNTER` int(18) DEFAULT NULL,  `SHOW_COUNTER_START` datetime DEFAULT NULL,  PRIMARY KEY (`ID`),  KEY `ix_iblock_element_1` (`IBLOCK_ID`,`IBLOCK_SECTION_ID`),  KEY `ix_iblock_element_4` (`IBLOCK_ID`,`XML_ID`,`WF_PARENT_ELEMENT_ID`),  KEY `ix_iblock_element_3` (`WF_PARENT_ELEMENT_ID`),  KEY `ix_iblock_element_code` (`IBLOCK_ID`,`CODE`)) ENGINE=InnoDB AUTO_INCREMENT=118518 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_iblock_property` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `IBLOCK_ID` int(11) NOT NULL,  `NAME` varchar(255) COLLATE utf8_unicode_ci NOT NULL,  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `SORT` int(11) NOT NULL DEFAULT '500',  `CODE` varchar(50) COLLATE utf8_unicode_ci DEFAULT NULL,  `DEFAULT_VALUE` text COLLATE utf8_unicode_ci,  `PROPERTY_TYPE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'S',  `ROW_COUNT` int(11) NOT NULL DEFAULT '1',  `COL_COUNT` int(11) NOT NULL DEFAULT '30',  `LIST_TYPE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'L',  `MULTIPLE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `XML_ID` varchar(100) COLLATE utf8_unicode_ci DEFAULT NULL,  `FILE_TYPE` varchar(200) COLLATE utf8_unicode_ci DEFAULT NULL,  `MULTIPLE_CNT` int(11) DEFAULT NULL,  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,  `LINK_IBLOCK_ID` int(18) DEFAULT NULL,  `WITH_DESCRIPTION` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `SEARCHABLE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `FILTRABLE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `IS_REQUIRED` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `VERSION` int(11) NOT NULL DEFAULT '1',  `USER_TYPE` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  `USER_TYPE_SETTINGS` text COLLATE utf8_unicode_ci,  `HINT` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  PRIMARY KEY (`ID`),  KEY `ix_iblock_property_1` (`IBLOCK_ID`),  KEY `ix_iblock_property_3` (`LINK_IBLOCK_ID`),  KEY `ix_iblock_property_2` (`CODE`)) ENGINE=InnoDB AUTO_INCREMENT=65 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_iblock_element_property` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `IBLOCK_PROPERTY_ID` int(11) NOT NULL,  `IBLOCK_ELEMENT_ID` int(11) NOT NULL,  `VALUE` text COLLATE utf8_unicode_ci NOT NULL,  `VALUE_TYPE` char(4) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'text',  `VALUE_ENUM` int(11) DEFAULT NULL,  `VALUE_NUM` decimal(18,4) DEFAULT NULL,  `DESCRIPTION` varchar(255) COLLATE utf8_unicode_ci DEFAULT NULL,  PRIMARY KEY (`ID`),  KEY `ix_iblock_element_property_1` (`IBLOCK_ELEMENT_ID`,`IBLOCK_PROPERTY_ID`),  KEY `ix_iblock_element_property_2` (`IBLOCK_PROPERTY_ID`),  KEY `ix_iblock_element_prop_enum` (`VALUE_ENUM`,`IBLOCK_PROPERTY_ID`),  KEY `ix_iblock_element_prop_num` (`VALUE_NUM`,`IBLOCK_PROPERTY_ID`)) ENGINE=InnoDB AUTO_INCREMENT=8659894 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_catalog_price` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `PRODUCT_ID` int(11) NOT NULL,  `EXTRA_ID` int(11) DEFAULT NULL,  `CATALOG_GROUP_ID` int(11) NOT NULL,  `PRICE` decimal(18,2) NOT NULL,  `CURRENCY` char(3) COLLATE utf8_unicode_ci NOT NULL,  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `QUANTITY_FROM` int(11) DEFAULT NULL,  `QUANTITY_TO` int(11) DEFAULT NULL,  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,  PRIMARY KEY (`ID`),  KEY `IXS_CAT_PRICE_PID` (`PRODUCT_ID`,`CATALOG_GROUP_ID`),  KEY `IXS_CAT_PRICE_GID` (`CATALOG_GROUP_ID`)) ENGINE=InnoDB AUTO_INCREMENT=1204531 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_catalog_product` (  `ID` int(11) NOT NULL,  `QUANTITY` double NOT NULL,  `QUANTITY_TRACE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `WEIGHT` double NOT NULL DEFAULT '0',  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `PRICE_TYPE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'S',  `RECUR_SCHEME_LENGTH` int(11) DEFAULT NULL,  `RECUR_SCHEME_TYPE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'D',  `TRIAL_PRICE_ID` int(11) DEFAULT NULL,  `WITHOUT_ORDER` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `SELECT_BEST_PRICE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `VAT_ID` int(11) DEFAULT '0',  `VAT_INCLUDED` char(1) COLLATE utf8_unicode_ci DEFAULT 'Y',  `TMP_ID` varchar(40) COLLATE utf8_unicode_ci DEFAULT NULL,  `CAN_BUY_ZERO` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `NEGATIVE_AMOUNT_TRACE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'D',  `BARCODE_MULTI` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `PURCHASING_PRICE` decimal(18,2) DEFAULT NULL,  `PURCHASING_CURRENCY` char(3) COLLATE utf8_unicode_ci DEFAULT NULL,  `QUANTITY_RESERVED` double DEFAULT '0',  `MEASURE` int(11) DEFAULT NULL,  `WIDTH` double DEFAULT NULL,  `LENGTH` double DEFAULT NULL,  `HEIGHT` double DEFAULT NULL,  `SUBSCRIBE` char(1) COLLATE utf8_unicode_ci DEFAULT NULL,  `TYPE` int(11) DEFAULT NULL,  PRIMARY KEY (`ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_catalog_iblock` (  `IBLOCK_ID` int(11) NOT NULL,  `YANDEX_EXPORT` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `SUBSCRIPTION` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'N',  `VAT_ID` int(11) DEFAULT '0',  `PRODUCT_IBLOCK_ID` int(11) NOT NULL DEFAULT '0',  `SKU_PROPERTY_ID` int(11) NOT NULL DEFAULT '0',  PRIMARY KEY (`IBLOCK_ID`),  KEY `IXS_CAT_IB_PRODUCT` (`PRODUCT_IBLOCK_ID`),  KEY `IXS_CAT_IB_SKU_PROP` (`SKU_PROPERTY_ID`)) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

CREATE TABLE `b_catalog_vat` (  `ID` int(11) NOT NULL AUTO_INCREMENT,  `TIMESTAMP_X` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,  `ACTIVE` char(1) COLLATE utf8_unicode_ci NOT NULL DEFAULT 'Y',  `C_SORT` int(18) NOT NULL DEFAULT '100',  `NAME` varchar(50) COLLATE utf8_unicode_ci NOT NULL DEFAULT '',  `RATE` decimal(18,2) NOT NULL DEFAULT '0.00',  PRIMARY KEY (`ID`),  KEY `IX_CAT_VAT_ACTIVE` (`ACTIVE`)) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci

Неактивен

 

#9 04.03.2014 18:45:07

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Битрикс + MySQL на скромном железе = медленные запросы

А план выполнения?

Неактивен

 

#10 04.03.2014 19:26:01

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

vasya написал:

А план выполнения?

не запускается, ругается на вот этот кусок

Строки 167-173

),
         CAT_IB.VAT_ID,
         CAT_PR.VAT_ID
      )
WHERE
   1 = 1
   AND (

Отредактированно Punkt (04.03.2014 19:26:42)

Неактивен

 

#11 04.03.2014 19:36:33

vasya
Архат
MySQL Authorized Developer
Откуда: Орел
Зарегистрирован: 07.03.2007
Сообщений: 5842

Re: Битрикс + MySQL на скромном железе = медленные запросы

А откуда вы сам запрос скопировали? Он синтаксически неверен, там неправильно указаны скобки.

Неактивен

 

#12 04.03.2014 19:44:30

Punkt
Участник
Зарегистрирован: 04.03.2014
Сообщений: 8

Re: Битрикс + MySQL на скромном железе = медленные запросы

vasya написал:

А откуда вы сам запрос скопировали? Он синтаксически неверен, там неправильно указаны скобки.

Мог ошибиться при форматировании. Запрос копировал из Битрикса, там где отражены медленные запросы к базе.
Перепроверю и отпишусь.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson