MySQL, огромная таблица, ускорение выбрки

1 234
LEOnidUKG
На сайте с 25.11.2006
Offline
1762
#21
i4e:
. . . . . . 😂

Всё тогда ясно.... тогда ХЗ где там может быть гемор. Тестировать надо на рабочем серваке, а не на изврате таком :)

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/ ✅ Настройка и оптимизация серверов https://getmanyspeed.ru/
dlyanachalas
На сайте с 15.09.2006
Offline
693
#22
kalim:


Надо сказать, OPTIMIZE TABLE дал эффект. Выборки стали раз в 5-10 быстрее. Но при больших выборках все ровно более 1 сек...

Не должно так быть.

Перед началом запроса напишите EXPLAIN ... и напишите сюда результат.

K
На сайте с 01.08.2009
Offline
88
#23
LEOnidUKG:
Читайте внимательно:
Этот HDD там могут 100 сайтов других раздирать по полной. Отсюда и тормоза.

Один сайт на virtualbox. HDD ничем не занят, идет только 1 запрос.

edogs software
На сайте с 15.12.2005
Offline
775
#24
kalim:
Есть таблица на 500Мб.
Буфер для кешироваия ключей настроен (300Мб).

Лучше засуньте всю таблицу в память (вирт. диск в памяти, таблицу на вирт. диск - раз уж мемори не канает) и всего делов. А кэш можно увинтить до нормальных значений обратно.

Реально, для небольших таблиц, которые легко помещаются в оперативку, проще поступить прямо и тупо - засунуть их в оперативку.

Разработка крупных и средних проектов. Можно с криптой. Разумные цены. Хорошее качество. Адекватный подход. Продаем lenovo legion в спб, дешевле магазинов, новые, запечатанные. Есть разные. skype: edogssoft
Оптимизайка
На сайте с 11.03.2012
Offline
396
#25
⭐ BotGuard (https://botguard.net) ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
N
На сайте с 06.05.2007
Offline
419
#26
Оптимизайка:
MySQL он такой

Какой ? Этот баг закрыт 5 лет назад.

Сначала надо EXPLAIN смотреть, а уже потом ругать mysql.

Кнопка вызова админа ()
siv1987
На сайте с 02.04.2009
Offline
427
#27

ТС,

SHOW CREATE TABLE ...

EXPLAIN SELECT ...

SET PROFILING =1;

SELECT ....

SHOW PROFILES;

И все это желательно проделать не на локалхосте, а на рабочем сервере.

L
На сайте с 07.12.2007
Offline
351
#28
kalim:
есть поле BLOB с бинарными данными 90-150 байт.

Поле BLOB в таблице на 2 млн записей - очень плохо, будет тормозить. Попробуйте преобразовать его в VARCHAR(255) и писать туда бинарные данные, кодированные в base64, 150 байт - туда войдут.

Или нормализовать данные из BLOB в отдельную таблицу.

dlyanachalas
На сайте с 15.09.2006
Offline
693
#29
netwind:
Какой ? Этот баг закрыт 5 лет назад.

Кто вам сказал, что это баг?

Вы просто не понимаете принципиального различия этих двух реализаций.

MySQL он такой

Только не MySQL, а просто SQL ;)

K
На сайте с 01.08.2009
Offline
88
#30

CREATE TABLE `compkey3_all` (

`id` int(11) NOT NULL,
`hash` varchar(32) NOT NULL,
`userpage` int(11) NOT NULL,
`aspect_ratio` int(3) NOT NULL,
`ban_micro` tinyint(1) NOT NULL DEFAULT '0',
`sumkey` smallint(3) NOT NULL DEFAULT '-1',
`sumkey2` smallint(3) NOT NULL DEFAULT '-1',
`sumkey3` smallint(3) NOT NULL DEFAULT '-1',
`sumkey4` smallint(3) NOT NULL DEFAULT '-1',
`data` blob NOT NULL,
`url` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
KEY `aspect_ratio` (`aspect_ratio`,`sumkey`,`sumkey2`,`sumkey3`,`sumkey4`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8

ID в запросах менял, чтобы не попасть на кешированный.

mysql> EXPLAIN SELECT `url`, `id` FROM `compkey3_all` WHERE `id` IN (1132, 1121788, 2052549, 509293, 15327, 58768, 1392430, 70563, 1760542, 1508491, 855960, 1917756, 937399, 353284, 2538159, 2408333, 2440320, 850478, 975793, 397821, 1179823, 487267, 1840621, 947858, 1415031, 962665, 2018237, 410593, 2548717, 808541, 98786, 421398, 1508731, 1627583, 1838721, 1738314, 499018, 2392849, 1324458, 484759, 1697525, 2406728, 692130, 2474748, 648260, 1673936, 2074852, 1997629, 11970, 722991);

+----+-------------+--------------+-------+---------------+---------+---------+------+------+-------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+-------+---------------+---------+---------+------+------+-------------+
| 1 | SIMPLE | compkey3_all | range | PRIMARY | PRIMARY | 4 | NULL | 50 | Using where |
+----+-------------+--------------+-------+---------------+---------+---------+------+------+-------------+
1 row in set (0.00 sec)

mysql> SHOW PROFILES;

| Query_ID | Duration | Query

| 1 | 0.80887575 | SELECT `url`, `id` FROM `compkey3_all` WHERE `id` IN (1511, 1621588, 2072749, 589293, 85327, 57788, 1392430, 70563, 1768742, 1508491, 875960, 1117756, 937179, 713284, 1538159, 2478133, 2440320, 750478, 155793, 357821, 1119823, 489567, 1840621, 947858, 1515031, 962665, 2019237, 410593, 2548717, 80454 |

Такой запрос выполняется за 0,5...2 сек.

База данных лежит на USB-HDD. На скрине его параметры. Основной жесткий диск примерно 2 раза быстрее. И производительность базы на нем тоже примерно 2 раза лучше (как понимаете, это не погоды не делает).

png clipboard11.png
1 234

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий