Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Большая база данных / 22 сообщений из 22, страница 1 из 1
10.02.2017, 17:53
    #39402420
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Всем здравствуйте!
Есть несколько вопросов, буду рад, если поможете советами.
1. Каким способом можно относительно быстро наполнить таблицу 20ю миллионами строк из шаблона в 100тыс. строк? То есть в текстовом файле есть 100тыс. строк, нужно размножить их до 20 миллионов.
2. В базе в каждой строке 35 столбцов (в основном varchar), запрос будет вида SELECT * FROM table WHERE text = 'example', text планируется индексом. Можно ли так обращаться к настолько большой базе данных (в плане времени ожидания)?
3. Какие основные моменты вы бы посоветовали для ускорения (до 3с на запрос) такой базы данных?

Огромное спасибо за помощь!
...
Рейтинг: 0 / 0
10.02.2017, 19:34
    #39402460
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Portreter,

1. Декартово произведение на таблицу из 200 строк. Или на две таблицы из 10 и 20 строк. И т.д.

2. Зависит от селективности условия. Если выбираться будет очень небольшая доля записей, то все будет хорошо.

3. Вопрос некорректен. Время выполнения запроса зависит от такой массы условий, что проще протестировать, чем посчитать. Но применительно к запросу из пункта 2 при высокой селективности условия 3 секунды представляются вполне возможными.
...
Рейтинг: 0 / 0
11.02.2017, 02:31
    #39402551
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
автор1. Декартово произведение на таблицу из 200 строк. Или на две таблицы из 10 и 20 строк. И т.д.
А технически как это делается?
автор2. Зависит от селективности условия. Если выбираться будет очень небольшая доля записей, то все будет хорошо.
Спасибо! Будет выбираться одна только строка.
И по пункту 3 еще раз спасибо)
...
Рейтинг: 0 / 0
11.02.2017, 13:32
    #39402645
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
PortreterА технически как это делается?JOIN-ом без указания условия соединения таблиц.
...
Рейтинг: 0 / 0
01.03.2017, 02:21
    #39412095
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
miksoft,

Я сделал запрос SELECT * FROM table1 CROSS JOIN table2 .
В результате два вопроса:
1. Как полученное сохранить в таблицу (чтобы в реальной таблице было 20 миллионов записей)?
2. В результате объединения количество столбцов стало 70 (35+35). А нужно чтобы 35 и осталось.

Заранее спасибо!
...
Рейтинг: 0 / 0
01.03.2017, 03:45
    #39412096
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Так, в общем получилось у меня создать нужную таблицу)
Но теперь другая проблема - запрос вида select * from table where col1=test (test - число в 10 символов) выполняется 2.2 минуты.
...
Рейтинг: 0 / 0
01.03.2017, 09:25
    #39412149
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Код: sql
1.
CREATE INDEX idx_col1 ON `table` (col1);
...
Рейтинг: 0 / 0
01.03.2017, 12:14
    #39412294
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Portretermiksoft,

Я сделал запрос SELECT * FROM table1 CROSS JOIN table2 .
В результате два вопроса:
1. Как полученное сохранить в таблицу (чтобы в реальной таблице было 20 миллионов записей)?
2. В результате объединения количество столбцов стало 70 (35+35). А нужно чтобы 35 и осталось.

Заранее спасибо!
Код: sql
1.
INSERT INTO mytable SELECT table1.* FROM table1, table2
...
Рейтинг: 0 / 0
01.03.2017, 13:10
    #39412354
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Огромное спасибо!
Поставил создание индекса, но я так понимаю индекс на такое количество записей будет создаваться вечность).
Можно как-то проверить создан ли в итоге индекс и сколько он весит?
...
Рейтинг: 0 / 0
01.03.2017, 13:21
    #39412359
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Portreterиндекс на такое количество записей будет создаваться вечностьОтсортирить 20кк чисел - вечность? не смеши...
...
Рейтинг: 0 / 0
01.03.2017, 13:23
    #39412363
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
PortreterМожно как-то проверить создан ли в итоге индекс
Если сервер выполнил команду, не сообщил об ошибке и показал новое приглашение ввода - да, выполнил. Чудес не бывает.
...
Рейтинг: 0 / 0
01.03.2017, 13:29
    #39412370
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
AkinaPortreterМожно как-то проверить создан ли в итоге индекс
Если сервер выполнил команду, не сообщил об ошибке и показал новое приглашение ввода - да, выполнил. Чудес не бывает.
Вот к сожалению выдал ошибку 500 Interval Error. Как в итоге посмотреть сколько весит индекс? Может со свободным местом проблема.
...
Рейтинг: 0 / 0
01.03.2017, 15:47
    #39412557
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Portreterвыдал ошибку 500 Interval ErrorУ MySQL нет такого сообщения. А с ошибками веб-сервера ты не по адресу. И ошибка веб-сервера вовсе не означает, что MySQL-сервер не выполнил затребованную операцию.
...
Рейтинг: 0 / 0
01.03.2017, 16:31
    #39412613
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
AkinaPortreterвыдал ошибку 500 Interval ErrorУ MySQL нет такого сообщения. А с ошибками веб-сервера ты не по адресу. И ошибка веб-сервера вовсе не означает, что MySQL-сервер не выполнил затребованную операцию.
Ага, ясно. А как все же на счет информации по занимаемому месту индекса? И как вообще посмотреть какие индексы работают в таблице?
...
Рейтинг: 0 / 0
01.03.2017, 16:43
    #39412629
machetero
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
PortreterИ как вообще посмотреть какие индексы работают в таблице?
Гуглите EXPLAIN
...
Рейтинг: 0 / 0
01.03.2017, 18:11
    #39412720
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
macheteroPortreterИ как вообще посмотреть какие индексы работают в таблице?
Гуглите EXPLAINГуглить не надо.
Надо смотреть в официальной документации - EXPLAIN Output Format
...
Рейтинг: 0 / 0
01.03.2017, 18:15
    #39412725
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
PortreterА как все же на счет информации по занимаемому месту индекса?Зависит от массы условий. В т.ч. от размера входящих полей, типа движка таблицы, наличия/размера полей первичного ключа.
...
Рейтинг: 0 / 0
01.03.2017, 21:53
    #39412842
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Сейчас посмотрел, у меня база 25 Гб занимает) Я так понимаю это все индекс.
...
Рейтинг: 0 / 0
02.03.2017, 01:03
    #39412894
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Народ, еще такой вопрос - правильная (ну самая начальная) структура таблицы такая?

col1 - PRIMARY KEY, уникальный первичный ключ (индекс), id каждой строки;
col2 - INDEX, основной столбец, по которому будет происходить поиск в таблице;
col3-col30 - все остальные столбцы.
...
Рейтинг: 0 / 0
02.03.2017, 11:11
    #39413010
miksoft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
Portreter,

Традиционно поля первичного ключа идут первыми. Но это лишь для удобства чтения человеком.
Все остальное вообще роли не играет.
...
Рейтинг: 0 / 0
02.03.2017, 11:37
    #39413026
Portreter
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
miksoftPortreter,

Традиционно поля первичного ключа идут первыми. Но это лишь для удобства чтения человеком.
Все остальное вообще роли не играет.
Ясно, спасибо!
А вот еще такой важный нюанс - у меня сейчас размер этой базы данных (20 миллионов строк, 26 столбцов) 11Гб (индекс занимает 300 Мб) - это нормально 11Гб или я может быть что-то не так сделал?
...
Рейтинг: 0 / 0
02.03.2017, 11:52
    #39413032
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Большая база данных
11 Гб / 20 кк = полкило на запись.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Большая база данных / 22 сообщений из 22, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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