powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите ускорить работу базы
7 сообщений из 7, страница 1 из 1
Помогите ускорить работу базы
    #39966006
hibinyru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем привет. Помогите, пожалуйста, ускорить работу mysql.

Что есть. Сайт о погоде, где используется база городов geonames.org - вот с ней и основные косяки.

Сервер достаточный 2 x Xeon E5620 2.40 ГГц, 64 ГБ DDR3, посещения маленькие

В таблице городов geoname: 3,296,360 записей, 1.3 Гиб, MyISAM, utf8_general_ci

авторCREATE TABLE `geoname` (
`geonameid` int NOT NULL,
`name` varchar(200) DEFAULT NULL,
`asciiname` varchar(200) DEFAULT NULL,
`alternatenames` varchar(4000) DEFAULT NULL,
`name_ru` varchar(200) NOT NULL,
`name_de` varchar(250) NOT NULL,
`name_fi` varchar(250) NOT NULL,
`status` int NOT NULL DEFAULT '0',
`latitude` decimal(10,7) DEFAULT NULL,
`longitude` decimal(10,7) DEFAULT NULL,
`fclass` char(1) DEFAULT NULL,
`fcode` varchar(10) DEFAULT NULL,
`country` varchar(2) DEFAULT NULL,
`cc2` varchar(60) DEFAULT NULL,
`admin1` varchar(20) DEFAULT NULL,
`admin2` varchar(80) DEFAULT NULL,
`admin3` varchar(20) DEFAULT NULL,
`admin4` varchar(20) DEFAULT NULL,
`population` int DEFAULT NULL,
`elevation` int DEFAULT NULL,
`gtopo30` int DEFAULT NULL,
`timezone` varchar(40) DEFAULT NULL,
`moddate` date DEFAULT NULL,
`url_yr` varchar(250) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `geoname`
--
ALTER TABLE `geoname`
ADD PRIMARY KEY (`geonameid`),
ADD KEY `name` (`name`),
ADD KEY `asciiname` (`asciiname`),
ADD KEY `country` (`country`),
ADD KEY `fclass` (`fclass`),
ADD KEY `fcode` (`fcode`),
ADD KEY `admin1` (`admin1`),
ADD KEY `name_ru` (`name_ru`),
ADD KEY `alternatenames` (`alternatenames`(333)),
ADD KEY `population` (`population`),
ADD KEY `latitude` (`latitude`),
ADD KEY `longitude` (`longitude`),
ADD KEY `status` (`status`);
COMMIT;


При включеном mysqld_slow_queries вылазят такие данные:

Query_time: 16.871267 Lock_time: 0.000093 Rows_sent: 1 Rows_examined: 3250392
SELECT * FROM geoname WHERE (name='Luanda' OR asciiname='Luanda') AND country='AO' ORDER BY population DESC LIMIT 1;

# Query_time: 17.273812 Lock_time: 0.000085 Rows_sent: 0 Rows_examined: 3296380
SELECT geonameid FROM geoname WHERE (name LIKE 'St Petersburg' OR asciiname LIKE 'St Petersburg') AND country LIKE 'RU' ORDER BY population DESC LIMIT 1;

# Query_time: 1.015236 Lock_time: 0.000072 Rows_sent: 1 Rows_examined: 4590
SELECT count(*) FROM geoname WHERE country='CN' AND admin1='20' AND (name LIKE 'Z%' OR asciiname LIKE 'Z%') AND fclass='P';

# Query_time: 3.073833 Lock_time: 0.000052 Rows_sent: 10000 Rows_examined: 1630000
SELECT asciiname,country,admin1 FROM geoname LIMIT 1620000,10000;

# Query_time: 9.534146 Lock_time: 0.000035 Rows_sent: 100 Rows_examined: 1837646
SELECT * FROM geoname WHERE country='NP' ORDER BY population DESC LIMIT 100;

ну и много похожих запросов.

Что можно сделать?

Может не правильно построены запросы?

Пишу сайты сам. Знаний по настройке mysql нет, все что нужно по настройкам сервера - прибегаю к услугам знакомого.

PHP 7.3.18 , mysql 8.0.20
...
Рейтинг: 0 / 0
Помогите ускорить работу базы
    #39966009
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hibinyru,

Попробуйте нормализовать таблицу до 3нф. Ну и explain запросов было бы не плохо увидеть. Движок еще MyISAM.
...
Рейтинг: 0 / 0
Помогите ускорить работу базы
    #39966158
Фотография Alex_Ustinov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hibinyru,

добавьте индекс Каутри+Name
...
Рейтинг: 0 / 0
Помогите ускорить работу базы
    #39966493
hibinyru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
crutchmaster,

а чего с MyIsam не так? innoDb лучше в этой версии mysql?
...
Рейтинг: 0 / 0
Помогите ускорить работу базы
    #39966494
hibinyru
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Alex_Ustinov,

спасибо, попробую
...
Рейтинг: 0 / 0
Помогите ускорить работу базы
    #39966674
Фотография Megabyte
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Однозначно сначала нормализация, потом запросы с нормальной бизнес-логикой, потом уже индексы под них.
...
Рейтинг: 0 / 0
Помогите ускорить работу базы
    #39966958
Фотография crutchmaster
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hibinyru
а чего с MyIsam не так?

Он, вроде как, устаревший был еще 5 лет назад. И таблицы на нём бились. Может что-то и изменилось, конечно.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите ускорить работу базы
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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