Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ускорить обработку запросов к базе, таблица 800 млн. записей / 9 сообщений из 9, страница 1 из 1
27.05.2015, 16:10:46
    #38969942
mr.Lindon
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
Привет! Есть таблица в базе MySQL - 800 млн. записей.
Необходимо, чтобы запросы Select,Update,Insert выполнялись (максимум несколько секунд), сейчас каждый занимает около минуты.
Запросы:

Код: sql
1.
Select ID,data From  tbl_data Where status=0 AND checked=0 Limit 0,1000

Код: sql
1.
Update tbl_data Set status=2,date_handled='$curr_date_time' Where ID IN($IdList)

Код: sql
1.
Update tbl_data Set status=0 Where status=2 AND HOUR(TIMEDIFF('$curr_date_time', date_handled)) >= 25

Код: sql
1.
Insert Into tbl_data Set data='$data'


Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
CREATE TABLE `tbl_data` (
  `ID` int(10) unsigned NOT NULL auto_increment,
  `data` varchar(250) NOT NULL,
  `checked` tinyint(1) NOT NULL default '0',
  `status` int(11) NOT NULL default '0',
  `date_handled` datetime NOT NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `ID` (`ID`),
  KEY `combined` (`checked`,`status`), 
  FULLTEXT KEY `domain_fulltext_index` (`data`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;
...
Рейтинг: 0 / 0
27.05.2015, 16:19:07
    #38969953
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
mr.Lindon
Код: sql
1.
  UNIQUE KEY `ID` (`ID`),

Это выбросьте, оно не нужно при наличии первичного ключа по этому же полю.

Первый и второй запрос уже сейчас должны работать быстро. Если это не так, то их план в студию (по крайней мере первого).

Третий запрос надо переписать, чтобы поле date_handled сравнивалось с каким-то выражением, а не участвовало в нем. Тогда понадобится индекс (status, date_handled).

В четвертом тормозить вообще нечему.
...
Рейтинг: 0 / 0
27.05.2015, 16:26:06
    #38969961
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
mr.Lindon,

Кстати, key_buffer_size какого размера?
...
Рейтинг: 0 / 0
27.05.2015, 16:38:46
    #38969973
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
mr.Lindonсейчас каждый занимает около минуты.
-- не может быть. Хотя бы INSERT должен выполняться гораздо быстрее, это одна запись.

По остальным запросам -- нужно знать в первую очередь, сколько они обрабатывают записей:

Код: sql
1.
2.
3.
4.
5.
select count(*) from tbl_data tbl_data Where status=0 AND checked=0

select count(*) from tbl_data Where ID IN($IdList)

select count(*) from tbl_data Where status=2 AND HOUR(TIMEDIFF('$curr_date_time', date_handled)) >= 25;
...
Рейтинг: 0 / 0
27.05.2015, 16:51:52
    #38969983
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
MasterZivПо остальным запросам -- нужно знать в первую очередь, сколько они обрабатывают записей:

Код: sql
1.
2.
3.
4.
5.
select count(*) from tbl_data tbl_data Where status=0 AND checked=0

select count(*) from tbl_data Where ID IN($IdList)

select count(*) from tbl_data Where status=2 AND HOUR(TIMEDIFF('$curr_date_time', date_handled)) >= 25;

Первый - не более 1000. Третий - все 800 млн.
...
Рейтинг: 0 / 0
27.05.2015, 17:15:42
    #38970009
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
miksoftMasterZivПо остальным запросам -- нужно знать в первую очередь, сколько они обрабатывают записей:

Код: sql
1.
2.
3.
4.
5.
select count(*) from tbl_data tbl_data Where status=0 AND checked=0

select count(*) from tbl_data Where ID IN($IdList)

select count(*) from tbl_data Where status=2 AND HOUR(TIMEDIFF('$curr_date_time', date_handled)) >= 25;

Первый - не более 1000. Третий - все 800 млн.

А ты-то откуда знаешь ?
...
Рейтинг: 0 / 0
27.05.2015, 17:29:32
    #38970027
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
MasterZivmiksoftпропущено...
Первый - не более 1000. Третий - все 800 млн.

А ты-то откуда знаешь ?
В первом - LIMIT.
В третьем четвёртом - нет условий отбора.
...
Рейтинг: 0 / 0
27.05.2015, 17:56:04
    #38970073
mini.weblab
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
а если убрать FULLTEXT KEY?
...
Рейтинг: 0 / 0
27.05.2015, 18:15:37
    #38970096
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Ускорить обработку запросов к базе, таблица 800 млн. записей
AkinaА ты-то откуда знаешь ?
В первом - LIMIT.
[/quot]

А я без лимита специально спрашивал...
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Ускорить обработку запросов к базе, таблица 800 млн. записей / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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