Мы управляем веб-сайтом для клиента, этот веб-сайт имеет серьезные проблемы с производительностью. Этот веб-сайт создан на базе CMS и одновременно обслуживает не более 20 посетителей. Пока посетители сайта являются единственными пользователями сайта, все идет хорошо. CMS создает кеш, а использование запросов mysql сведено к минимуму.
Производительность начинает падать, когда сотрудники нашего клиента сами начинают работать над сайтом. Весь рабочий процесс проходит через сайт, включая обновление записей в базе данных и добавление новых. Когда записи обновляются, удаленный или вставленный кеш удаляется, поэтому действия посетителей веб-сайта будут зависеть от запроса.
Мой первый вопрос: сможет ли mysql обрабатывать эти запросы? Несмотря на то, что дизайн базы данных плохой (см. Ниже). Когда я смотрю список процессов в mysql, я вижу, что простые запросы занимают до 15 секунд. эти запросы, кажется, занимают так много времени, если одновременно выполняются запросы на обновление или вставку.
под большой таблицей, содержащей все записи. все, что используется интерфейсом веб-сайта, хранится в этой одной таблице. включая бинарные файлы. В таблице содержится 8676 записей. Во внешнем интерфейсе есть много запросов, которые используют WHERE, например, для Variabele5 или Variabele6. Значение этих полей Variabele зависит от типа содержимого.
Например, ГДЕ:
WHERE Variabele5 > 500 AND Variabele6 =2 AND contenttype = 35
Среда, в которой работают все сотрудники, не кэшируется. В этой среде есть несколько списков с параметрами порядка и поиска. Эти запросы хранятся в кэше памяти в максимально возможной степени, но когда запись обновляется, удаляется или вставляется, кэш памяти очищается. Это в сочетании с действиями вставки, обновления и удаления, вероятно, является узким местом.
Итак, мой вопрос в том, сможет ли mysql справиться со всем этим или дизайн базы данных не подходит для обработки запросов.
+---------------+---------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +---------------+---------------+------+-----+---------+----------------+ | nr | mediumint(80) | NO | PRI | NULL | auto_increment | | hidden | int(1) | NO | | 0 | | | Title | varchar(255) | NO | MUL | | | | Body | text | NO | | NULL | | | Description | text | NO | | NULL | | | user_id | mediumint(80) | NO | | 0 | | | addate | varchar(255) | NO | | NULL | | | moddate | varchar(255) | NO | | NULL | | | contenttype | mediumint(80) | NO | MUL | 0 | | | parent | mediumint(80) | NO | | 0 | | | Status | mediumint(80) | NO | MUL | NULL | | | CODE | varchar(255) | NO | MUL | NULL | | | menu | mediumint(80) | NO | | NULL | | | filetype | mediumint(80) | NO | | NULL | | | folder | int(11) | NO | | NULL | | | sortIndex | bigint(255) | NO | | NULL | | | servercache | int(1) | NO | | 1 | | | futurecache | int(1) | NO | | NULL | | | publishFrom | date | YES | | NULL | | | publishUntil | date | YES | | NULL | | | pinned | int(11) | YES | | NULL | | | keywords | text | NO | | NULL | | | latestversion | int(11) | NO | | NULL | | | permalink | text | NO | | NULL | | | Integer1 | int(12) | NO | | 0 | | | Integer2 | int(4) | NO | | 0 | | | Integer3 | int(4) | NO | | 0 | | | Integer4 | int(4) | NO | | 0 | | | Variabele1 | varchar(255) | NO | | | | | Variabele2 | varchar(255) | NO | | | | | Variabele3 | varchar(255) | NO | | | | | Variabele4 | varchar(255) | NO | | | | | Date1 | varchar(255) | NO | | | | | Date2 | varchar(255) | NO | | | | | Text1 | text | NO | | NULL | | | Text2 | text | NO | | NULL | | | Text3 | text | NO | | NULL | | | Binary1 | longblob | NO | | NULL | | | Binary1Type | varchar(255) | NO | | NULL | | | Binary2 | longblob | NO | | NULL | | | Binary2Type | varchar(255) | NO | | NULL | | | Binary3 | longblob | NO | | NULL | | | Binary3Type | varchar(255) | NO | | NULL | | | browseAccess | varchar(255) | NO | | NULL | | | Binary4 | longblob | NO | | NULL | | | Binary4Type | varchar(255) | NO | | NULL | | | Binary5 | longblob | NO | | NULL | | | Binary5Type | varchar(255) | NO | | NULL | | | Binary6 | longblob | NO | | NULL | | | Binary6Type | varchar(255) | NO | | NULL | | | Integer5 | int(11) | NO | | NULL | | | Integer6 | int(11) | NO | | NULL | | | Variabele6 | varchar(255) | NO | | NULL | | | Binary7 | longblob | NO | | NULL | | | Binary7Type | varchar(255) | NO | | NULL | | | Binary8 | longblob | NO | | NULL | | | Binary8Type | varchar(255) | NO | | NULL | | | Binary9 | longblob | NO | | NULL | | | Binary9Type | varchar(255) | NO | | NULL | | | Binary10 | longblob | NO | | NULL | | | Binary10Type | varchar(255) | NO | | NULL | | | Binary11 | longblob | NO | | NULL | | | Binary11Type | varchar(255) | NO | | NULL | | | Binary12 | longblob | NO | | NULL | | | Binary12Type | varchar(255) | NO | | NULL | | | Binary13 | longblob | NO | | NULL | | | Binary13Type | varchar(255) | NO | | NULL | | | Binary14 | longblob | NO | | NULL | | | Binary14Type | varchar(255) | NO | | NULL | | | Binary15 | longblob | NO | | NULL | | | Binary15Type | varchar(255) | NO | | NULL | | | Text4 | text | NO | | NULL | | | Text5 | text | NO | | NULL | | | Text6 | text | NO | | NULL | | | Text7 | text | NO | | NULL | | | Text8 | text | NO | | NULL | | | Variabele5 | varchar(255) | NO | | NULL | | | Variabele7 | varchar(255) | NO | | NULL | | | Variabele8 | varchar(255) | NO | | NULL | | | Variabele9 | varchar(255) | NO | | NULL | | | Variabele10 | text | NO | | NULL | | | Variabele11 | varchar(255) | NO | | NULL | | | Variabele12 | varchar(255) | NO | | NULL | | | Variabele13 | varchar(255) | NO | | NULL | | | Variabele14 | varchar(255) | NO | | NULL | | | Variabele15 | varchar(255) | NO | | NULL | | | Variabele16 | varchar(255) | NO | | NULL | | | Variabele17 | varchar(255) | NO | | NULL | | | Variabele18 | varchar(255) | NO | | NULL | | | Variabele19 | varchar(255) | NO | | NULL | | | Variabele20 | varchar(255) | NO | | NULL | | | Variabele21 | varchar(255) | NO | | NULL | | | Variabele22 | varchar(255) | NO | | NULL | | | Variabele23 | varchar(255) | NO | | NULL | | | Variabele24 | varchar(255) | NO | | NULL | | | Variabele25 | varchar(255) | NO | | NULL | | | Variabele26 | varchar(255) | NO | | NULL | | | Variabele27 | varchar(255) | NO | | NULL | | | Variabele28 | varchar(255) | NO | | NULL | | | Variabele29 | varchar(255) | NO | | NULL | | | Variabele30 | varchar(255) | NO | | NULL | | | Variabele31 | varchar(255) | NO | | NULL | | | Variabele32 | varchar(255) | NO | | NULL | | | Variabele33 | varchar(255) | NO | | NULL | | | Variabele34 | varchar(255) | NO | | NULL | | | Variabele35 | varchar(255) | NO | | NULL | | | Variabele36 | varchar(255) | NO | | NULL | | | Variabele37 | varchar(255) | NO | | NULL | | | Variabele38 | varchar(255) | NO | | NULL | | | Variabele39 | varchar(255) | NO | | NULL | | | Variabele40 | varchar(255) | NO | | NULL | | | Variabele41 | varchar(255) | NO | | NULL | | | Variabele42 | varchar(255) | NO | | NULL | | | Variabele43 | varchar(255) | NO | | NULL | | | Variabele44 | varchar(255) | NO | | NULL | | | Variabele45 | varchar(255) | NO | | NULL | | | Variabele46 | varchar(255) | NO | | NULL | | | Variabele47 | varchar(255) | NO | | NULL | | | Variabele48 | varchar(255) | NO | | NULL | | | Variabele49 | varchar(255) | NO | | NULL | | | Variabele50 | varchar(255) | NO | | NULL | | +---------------+---------------+------+-----+---------+----------------+
индексы:
+-------------+--------------+--------------+-------------+------+ | Key_name | Seq_in_index | Column_name | Cardinality | Null | +-------------+--------------+--------------+-------------+------+ | PRIMARY | 1 | nr | 8675 | | | Status | 1 | Status | 5 | | | Status | 2 | publishFrom | 8675 | YES | | Status | 3 | publishUntil | 8675 | YES | | CODE | 1 | CODE | 4337 | | | CODE | 2 | Title | 4337 | | | contenttype | 1 | contenttype | 30 | | | Title | 1 | Title | 2891 | | +-------------+--------------+--------------+-------------+------+
Информация о СЕРВЕРЕ: 4x Intel (R) Xeon (R) CPU L5630 @ 2,13 ГГц
+---------------------------------------------------------------------------+ | free -mt | +---------------------------------------------------------------------------+ | total used free shared buffers cached | | Mem: 4096 3841 254 0 44 1223 | | -/+ buffers/cache: 2573 1522 | | Swap: 1023 422 601 | | Total: 5119 4263 856 | +---------------------------------------------------------------------------+
Если мне нужно предоставить дополнительную информацию, пожалуйста, дайте мне знать.
РЕДАКТИРОВАТЬ: некоторые примеры запросов
Запросы различаются, но вот несколько примеров:
Поисковый запрос для сотрудника:
EXPLAIN SELECT profiel.nr as nr, CONCAT(profiel.title,' ',profiel.Variabele49) as naam,profiel.Variabele3 as tel, profiel.Variabele44 as huurprijs, profiel.Variabele5 as inkomen, profiel.Variabele39 as personen, profiel.Variabele46 as perdatum, profiel.addate as inschrijving, profiel.text1 as opmerkingen, medewerker.Title as m_naam,profiel.Variabele48 as lang FROM site_content as profiel left join vw_activeContent as medewerker on medewerker.nr = profiel.Variabele9 WHERE profiel.contenttype =26 AND (profiel.Status=3 OR profiel.Text8='Nee') AND ( profiel.nr LIKE '%Rem%' OR profiel.title LIKE '%Rem%' OR ' ' LIKE '%Rem%' OR CONCAT(profiel.title,' ',profiel.Variabele49) LIKE '%Rem%' OR profiel.Variabele49 LIKE '%Rem%' OR profiel.Variabele3 LIKE '%Rem%' OR profiel.Variabele44 LIKE '%Rem%' OR profiel.Variabele5 LIKE '%Rem%' OR profiel.Variabele39 LIKE '%Rem%' OR profiel.Variabele46 LIKE '%Rem%' OR profiel.addate LIKE '%Rem%' OR profiel.text1 LIKE '%Rem%' OR medewerker.Title LIKE '%Rem%' OR profiel.Variabele48 LIKE '%Rem%' OR profiel.Variabele1 LIKE '%Rem%' OR profiel.Variabele3 LIKE '%Rem%' ) ORDER BY profiel.sortIndex
+----+-------------+-------+--------------+--------+----------------+--------------------+-------------+---+---------+--------------------+---+-------------+-----------------------------+-------+ | id | select_type | table | | type | possible_keys | | key | | key_len | ref | | | rows | Extra | +----+-------------+-------+--------------+--------+----------------+--------------------+-------------+---+---------+--------------------+---+-------------+-----------------------------+-------+ | 1 | SIMPLE | | profiel | | ref | Status,contenttype | contenttype | 3 | const | | | 1700 | Using where; Using filesort | | | 1 | SIMPLE | | site_content | eq_ref | PRIMARY,Status | | PRIMARY | | 3 | profiel.Variabele9 | 1 | Using where | | | +----+-------------+-------+--------------+--------+----------------+--------------------+-------------+---+---------+--------------------+---+-------------+-----------------------------+-------+
Посетитель по поисковому запросу
EXPLAIN SELECT nr, title AS adres, Description AS description, Binary3 AS bin, Variabele2 AS
TYPE , Text3, Text2 AS verhuurd, Integer2 AS kamers, Integer3 AS personen, Variabele4 AS inclusief, Text1 AS oplevering, Integer5 AS huurpijs, Variabele6 AS wijk, moddate
FROM vw_activeContent
WHERE contenttype =22
AND Integer2 >=2
AND Integer3 >=1
AND Integer5 >380
AND Integer5 <770
ORDER BY Integer5 ASC
+----+-------------+-------+--------------+------+--------------------+-------------+-----+-------+---------+-----------------------------+------+-------+ | id | select_type | table | | type | possible_keys | | key | | key_len | ref | rows | Extra | +----+-------------+-------+--------------+------+--------------------+-------------+-----+-------+---------+-----------------------------+------+-------+ | 1 | SIMPLE | | site_content | ref | Status,contenttype | contenttype | 3 | const | 696 | Using where; Using filesort | | | +----+-------------+-------+--------------+------+--------------------+-------------+-----+-------+---------+-----------------------------+------+-------+
запрос, который широко используется:
EXPLAIN SELECT DISTINCT Variabele2
FROM site_content
WHERE contenttype =22
AND STATUS =1
ORDER BY Variabele2 ASC
+----+-------------+-------+--------------+------+--------------------+-------------+-----+-------+---------+----------------------------------------------+------+-------+ | id | select_type | table | | type | possible_keys | | key | | key_len | ref | rows | Extra | +----+-------------+-------+--------------+------+--------------------+-------------+-----+-------+---------+----------------------------------------------+------+-------+ | 1 | SIMPLE | | site_content | ref | Status,contenttype | contenttype | 3 | const | 696 | Using where; Using temporary; Using filesort | | | +----+-------------+-------+--------------+------+--------------------+-------------+-----+-------+---------+----------------------------------------------+------+-------+