Форум программистов, компьютерный форум, киберфорум
Наши страницы
MySQL
Войти
Регистрация
Восстановить пароль
 
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
1

Что-то медленно

29.12.2017, 21:12. Просмотров 345. Ответов 16
Метки нет (Все метки)

Есть VDS
CPU: 1 ядро (3000MHz); RAM: 2GB; SSD: 20GB; Internet: 1Gbit/s; OS: Ubuntu 14.04

Установил на него Apache, php5, MySQL, phpmyadmin

База: 4 таблицы, 1 из них 50кк+ строк. Перенес с хостинга, т.к. у хостинга есть ограничение на нагрузку.
Но наверное, я что то делаю не так, потому что на хостинге все обрабатывается быстрее (и не надо говорить, что железо на хостинге лучше, сейчас объясню почему).
Допустим мне нужно достать 5к строк из таблицы, и другим запросом нужно достать 100к строк из той же таблицы, и по логике вещей первый запрос должен сработать быстрее в несколько раз, но нет. С типом таблицы InnoDB оба запроса обрабатывались примерно по 40 секунд. Решил поставить эксперимент, поменял тип таблицы на MyISAM, и время обработки запроса уменьшилось до 16 секунд, причем у обоих запросов, такое ощущение, что стоит задержка перед запросом. И почему время выполнения практически одинаковое?

Какие данные вам предоставить с конфигов сервера?

Ладно, это SELECT запрос, но UPDATE с подзапросом SELECT выполняется 40 секунд, а нужно лишь к примеру получить кол-во строк из таблицы с большим объемом, у которых категория (cat) равно определенному числу, и не важно, 5к ему придется считать, или 100к.

Есть еще такое ощущение, что он однопоточный, потому что если к примеру нужно удалить пару десятков тысяч строк, и в послать запрос на удаление, все, еще одну страницу с сервера не подгрузишь пока не выполниться запрос или не перезагрузишь апач.

Что подскажите?

Добавлено через 8 минут
Пример SELECT запроса
SELECT line FROM table1 WHERE cat=5
таблица имеет 2 колонки, line и cat
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
29.12.2017, 21:12
Ответы с готовыми решениями:

Медленно работает SELECT
Здравствуйте, имеется 2 таблицы (t_nd 242'840 записей и t_node 198'380 записей)...

Очень медленно работает выборка INNER JOIN
Добрый день! У меня есть таблица компании, таблица недвижимости и таблица с...

Почему запрос работает так медленно?
Привет. Появилась проблема с запросом. Уже второй час пытаюсь решить, начинает...

Медленно работают простые запросы, но с сортировкой
SELECT id FROM table WHERE status=1 ORDER BY date_add DESC Индексы: status...

Почему в SQLite медленно работает запрос с использованием IN
Привет всем. Подскажите пожалуйста почему в SQLite медленно работает запрос с...

16
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
01.01.2018, 15:30  [ТС] 2
Помогите
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
01.01.2018, 16:40 3
С сервером всё у Вас в порядке. Даже конфигурацию смотреть не нужно.
А вот описание на innoDB не мешает просмотреть... Так вот, там чётко сказано:
"SELECT (*) FROM table работает гораздо медленнее, чем MyISAM — создавайте триггеры если нужно ... mysqldump работает медленно, для бэкапа используйте InnodDb Hot Backup ... следите за индексами, выгода InnoDB теряется, если для запросов нет индексов".

Да и вообще-то, на мой (и не только) взгляд, innoDB специально заточена для ОЧЕНЬ больших объёмов данных. Вплоть до 64Тб и высокой нагрузки сайта. Так есть ли смыл вообще ьпереходить на innoDB при Ваших-то объёмах?
0
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
01.01.2018, 17:43  [ТС] 4
Цитата Сообщение от EU1CJ Посмотреть сообщение
Так есть ли смыл вообще ьпереходить на innoDB при Ваших-то объёмах?
InnoDB она автоматом выставилась, когда бд переносил
Но у меня вопрос в другом, как ускорить работу?
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
01.01.2018, 18:11 5
- Всё таки стоит перейти на MyISAM,
- У хостера ENGINE какой был для таблиц?
- Выложите dump структуры таблиц, только структуры.
0
retvizan
297 / 285 / 107
Регистрация: 09.04.2011
Сообщений: 795
01.01.2018, 19:41 6
INstantKiLLer, см Поиск узких мест в производительности MySQL: ботанический определитель

Цитата Сообщение от EU1CJ Посмотреть сообщение
- Всё таки стоит перейти на MyISAM,
крайне сомнительный совет
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
01.01.2018, 19:57 7
Цитата Сообщение от retvizan Посмотреть сообщение
крайне сомнительный совет
Ну, так и я не истина в последней инстанции...
0
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
01.01.2018, 23:45  [ТС] 8
Цитата Сообщение от EU1CJ Посмотреть сообщение
- Выложите dump структуры таблиц, только структуры.
SQL
1
2
3
4
5
6
7
8
9
10
11
12
13
CREATE TABLE IF NOT EXISTS `base` (
  `cat` INT(11) NOT NULL,
  `sector` INT(11) NOT NULL,
  `mail` VARCHAR(256) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;
 
CREATE TABLE IF NOT EXISTS `cats` (
  `id` INT(11) NOT NULL AUTO_INCREMENT,
  `name` VARCHAR(256) NOT NULL,
  `count` INT(11) NOT NULL,
  `sectors` INT(11) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB  DEFAULT CHARSET=utf8 AUTO_INCREMENT=355 ;
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
02.01.2018, 23:31 9
Спасибо. Позже посмотрю.

Добавлено через 7 часов 32 минуты
Я не буду пересказывать статью своими словами, на за чем.
Просто сами посмотрите, там очень неплохо описана оптимизация запросов для innodb.
Вот линк статьи
(раздел "Оптимизация глубоких offset-ов")

Я сделал локально таблицы, которые прислали.
Большой объём данных я туда не загнал, но даже на 200 records разница ощутима, если нет индексирования. А у Вас его и нет как раз.
Разница - это между MyISAM и InnoDB.
0
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
03.01.2018, 09:36  [ТС] 10
Цитата Сообщение от EU1CJ Посмотреть сообщение
разница ощутима, если нет индексирования. А у Вас его и нет как раз.
Т.е. если я сделаю индексирование, то работа будет быстрее?

Да и мой вопрос не совсем про это был. Такая же база данных, на хостинге работает в разы быстрее и у нее есть заметная зависимость от числа строк, а на vps, что 5к, что 100к строк, время обработки одинаковое. Да и Limit я не использую
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
03.01.2018, 14:13 11
Согласен, что-то я отвлёкся от основной темы... ((
0
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
03.01.2018, 16:25  [ТС] 12
Ладно, проблема вроде как решена. А решением ее было, то что я сделал колонку cat в base индексом
Вот подумываю, стоит ли добавить уникальный индекс (id)? ускорит ли немного он работу?
0
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
03.01.2018, 16:42 13
Это я и имел ввиду. У себя я тоже идексировал для теста.

Добавьте, хуже не станет, только ускорит. Согласно документации "в качестве clustered index выбирается PRIMARY KEY". А в таблице base и такого нет.
1
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
03.01.2018, 23:25  [ТС] 14
Глупый вопрос, но все же. Это как то повлияет на объем?
0
retvizan
297 / 285 / 107
Регистрация: 09.04.2011
Сообщений: 795
03.01.2018, 23:46 15
INstantKiLLer, тут есть базовые данные про индексы в mysql

Цитата Сообщение от EU1CJ Посмотреть сообщение
Добавьте, хуже не станет, только ускорит. Согласно документации "в качестве clustered index выбирается PRIMARY KEY". А в таблице base и такого нет.
1. таблица `base` указана как myisam
2. прежде чем добавлять новую колонку (id), стоит узнать есть ли в таблице уникальное поле (комбинация полей), могущее выступать в качестве primary
1
EU1CJ
26 / 26 / 17
Регистрация: 23.12.2017
Сообщений: 102
04.01.2018, 09:39 16
Цитата Сообщение от retvizan Посмотреть сообщение
1. таблица `base` указана как myisam
А ведь точно, не заметил... У себя создавал как innodb.
Цитата Сообщение от INstantKiLLer Посмотреть сообщение
Это как то повлияет на объем?
Однозначно трудно сказать..
Вот, например, primary key int(10) - длина ключа 4B.
Если подсчитать при 100 тыс. records ~ 400Kb. Что-то в этом духе.
1
INstantKiLLer
5 / 5 / 3
Регистрация: 11.10.2014
Сообщений: 342
04.01.2018, 17:34  [ТС] 17
Цитата Сообщение от EU1CJ Посмотреть сообщение
А ведь точно, не заметил... У себя создавал как innodb.
Перед индексом для теста выбрал InnoDB, так на нем и остался, ведь обработка 100к строк не занимает более 8 секунд, для меня это приемлимо
Стоит ли перейти на MyISAM?
0
04.01.2018, 17:34
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
04.01.2018, 17:34

Что выбрать Images или ImageButtons? Медленно работает
У меня есть UserControl. В нем набор ImageButtons. Добавлены аттрибуты...

Что мне надо поменять в моём компе, работает медленно как то!
Ребята подскажите кто хорошо понимает, модернизация последняя 14.03.11год. Сижу...

Данные из БД в DGV загружаются настолько медленно, что это видно на глаз
использую метод написанный здесь...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru