Очень большие данные в mysql столе. Даже выберите заявления, занимают время

Я работаю над базой данных, и это - довольно большое с 1.3 миллиардами рядов и приблизительно 35 колонками. Вот то, что я получаю после проверки статуса стола:

Name:Table Name
Engine:InnoDB
Version:10
Row_format:Compact
Rows:12853961
Avg_row_length:572
Data_length:7353663488
Max_data_length:0
Index_length:5877268480
Data_free:0
Auto_increment:12933138
Create_time:41271.0312615741
Update_time:NULL
Check_time:NULL
Collation:utf8_general_ci
Checksum:NULL
Create_options:
Comment:InnoDB free: 11489280 kB

Проблема я сталкиваюсь с этим даже единственный запрос Select, занимает слишком много времени, чтобы обработать, например, вопрос , Избранный * от предела Table_Name 0,50000 занимает приблизительно 2.48 минуты Это ожидается?

Я должен сделать отчет, в котором я должен использовать целые исторические данные, которые целы 1.3 bil ряда. Я мог сделать эту партию партией, но тогда я буду иметь к выполнению запросов, которое занимает слишком много времени много раз снова и снова.

Когда простой запрос занимает так много времени, я не в состоянии сделать любой другой сложный запрос, для которого нужны соединения и операторы выбора.

3
мы можем смотреть вашей схемы DB? управляемый Название DESC Table\
добавлено автор Raptor, источник
я не уверен в MySQL конфигурации, но для того, чтобы иметь быстрее запросы SQL бегут , объяснить план - видят, где вся стоимость и память. отправьте его здесь, и мы сообщим, как сделать запрос SQL быстрее
добавлено автор Naveen Babu, источник
Добавьте индекс в своем Столе, используйте Столбец индекса в где пункт.
добавлено автор Joddy, источник
Не используйте * для выбора, извлекайте только колонки, желаемые вами.
добавлено автор Joddy, источник
Попробуйте разделение диапазона на своем столе. won' t затрагивают ваши данные. может улучшить ваше выступление
добавлено автор Joddy, источник
Попробуйте разделение диапазона на своем столе. won' t затрагивают ваши данные. может улучшить ваше выступление
добавлено автор Joddy, источник

9 ответы

Обычная практика, если у вас есть огромный объем данных, вы...

  1. не должен ИЗБРАННЫЙ * : необходимо только выбрать колонки, вы хотите
  2. должен Ограничить ваш диапазон усилия меньшим числом: Я держал пари, что вы не будете обращаться с 50000 отчетов в то же время. Попытайтесь принести его партия партией.
7
добавлено
Вопросы для сообщения всегда проводимом много времени. Действительное решение, определите вопрос, который может принести все полезные данные (никакое барахло) от ваших данных. Добавляют индекс если возможно
добавлено автор Raptor, источник
я должен сделать отчет, в котором я должен использовать целые исторические данные, которые целы 1.3 bil ряда. Я могу сделать эту партию партией, но тогда я должен был бы применить вопросы вовремя, которые снова занимают слишком много времени, добавляют к тому огромному количеству партий, что я должен обработать. Действительно застрявший здесь
добавлено автор Rahul Agarwal, источник
создает таблицу interm1 как избранный device_uuid, имя от Имени таблицы , вопрос как это занимает приблизительно 20-30 минут.
добавлено автор Rahul Agarwal, источник

Обычная практика, если у вас есть огромный объем данных, вы...

  1. не должен ИЗБРАННЫЙ * : необходимо только выбрать колонки, вы хотите
  2. должен Ограничить ваш диапазон усилия меньшим числом: Я держал пари, что вы не будете обращаться с 50000 отчетов в то же время. Попытайтесь принести его партия партией.
7
добавлено
Вопросы для сообщения всегда проводимом много времени. Действительное решение, определите вопрос, который может принести все полезные данные (никакое барахло) от ваших данных. Добавляют индекс если возможно
добавлено автор Raptor, источник
я должен сделать отчет, в котором я должен использовать целые исторические данные, которые целы 1.3 bil ряда. Я могу сделать эту партию партией, но тогда я должен был бы применить вопросы вовремя, которые снова занимают слишком много времени, добавляют к тому огромному количеству партий, что я должен обработать. Действительно застрявший здесь
добавлено автор Rahul Agarwal, источник
создает таблицу interm1 как избранный device_uuid, имя от Имени таблицы , вопрос как это занимает приблизительно 20-30 минут.
добавлено автор Rahul Agarwal, источник

Попытка, добавляющая оператор Where: , ГДЕ 1=1 Если это не дает эффекта тогда, необходимо изменить тип двигателя на MyISAM .

2
добавлено
кажется не связанным. Между прочим, изменение Двигателя DB с таким объемом данных занимает много времени.
добавлено автор Raptor, источник
В прошлом я столкнулся с подобной проблемой. Добавление, ГДЕ 1=1 улучшает выполнение времени, но изменяющийся it' s тип двигателя к MyISAM это улучшается больше.
добавлено автор gezimi005, источник
MyISAM быстрее в чтении, чем InnoDB. Я думаю it' s лучше, если вы проверяете его со столами, которые имеют много рядов, и затем дают правильное мнение.
добавлено автор gezimi005, источник
Для основанного на тексте поиска MyISM лучше, чем INNODB.
добавлено автор Joddy, источник
Где 1=1 верно для всех условий и будет иметь подобный план выполнения как без Где. Попробуйте, ОБЪЯСНЯЮТ you' ll видят.
добавлено автор Joddy, источник
я не могу изменить свою базу данных. Я полагаю, что у mySql должно быть своего рода решение для больших столов
добавлено автор Rahul Agarwal, источник

Попытка, добавляющая оператор Where: , ГДЕ 1=1 Если это не дает эффекта тогда, необходимо изменить тип двигателя на MyISAM .

2
добавлено
кажется не связанным. Между прочим, изменение Двигателя DB с таким объемом данных занимает много времени.
добавлено автор Raptor, источник
В прошлом я столкнулся с подобной проблемой. Добавление, ГДЕ 1=1 улучшает выполнение времени, но изменяющийся it' s тип двигателя к MyISAM это улучшается больше.
добавлено автор gezimi005, источник
MyISAM быстрее в чтении, чем InnoDB. Я думаю it' s лучше, если вы проверяете его со столами, которые имеют много рядов, и затем дают правильное мнение.
добавлено автор gezimi005, источник
Для основанного на тексте поиска MyISM лучше, чем INNODB.
добавлено автор Joddy, источник
Где 1=1 верно для всех условий и будет иметь подобный план выполнения как без Где. Попробуйте, ОБЪЯСНЯЮТ you' ll видят.
добавлено автор Joddy, источник
я не могу изменить свою базу данных. Я полагаю, что у mySql должно быть своего рода решение для больших столов
добавлено автор Rahul Agarwal, источник

позвольте в своем my.conf медленным запросам до секунд N, затем выполните некоторые вопросы и следите за этой регистрацией, это дает вам некоторый ключ к разгадке, и возможно вы могли добавить некоторые индексы к этому столу.

or do some queries with EXPLAIN. http://hackmysql.com/case1

1
добавлено
Вопрос с 1.3 миллиардами рядов, вероятно, занимает 1 секунду. Так, регистрация медленного запроса зарегистрирует весь его SQL-оператор отчета.
добавлено автор Raptor, источник
хотите верьте, хотите нет, я обращаюсь с некоторыми столами с этой суммой рядов, и выбирание занимает меньше чем 1 секунду: D
добавлено автор jipipayo, источник

Типичная проблема многие администраторы базы данных стоит. Решение: Кэширование .

Сломайте Вопросы в большее количество более простых и небольших вопросов. Используйте Memcached или другие методы кэширования и инструменты, которые Memcached экономит ключу vaue пары, проверьте на данные в кэш-памяти.. при наличии используйте его. Если не приносят его от базы данных и затем используют и ловят. Затем свяжите данные, будет доступно от cahe.

Необходимо будет развивать собственную логику и изменить некоторые вопросы. Memcached доступен здесь:

http://memcached.org/

Много обучающих программ имеются в сети

1
добавлено
я не рекомендую memcached "скрыться" плохо разработанный (без надлежащих индексов) столы. походит, чтобы "скрыть мусор под ковром"
добавлено автор jipipayo, источник
я ежедневно использую memcached, но я использую memcached, как только мне точно настроили мои вопросы, и если вы хотите НОВЫЕ данные (данные об отчете, статистика в реальном времени, и т.д.) memcached бесполезен
добавлено автор jipipayo, источник
нет.. databses медленные!! кэширование быстро.. с Facebook, чтобы написать в Твиттере.. все крупнейшие места используют memcached.
добавлено автор geekman, источник
Кэширование было бы бесполезно для заявления на отчет. 1. он доступ привычки те же самые данные часто. 2. кэширование полезен для веб-приложения, чтобы получить доступ к часто используемым данным
добавлено автор Naveen Babu, источник

Типичная проблема многие администраторы базы данных стоит. Решение: Кэширование .

Сломайте Вопросы в большее количество более простых и небольших вопросов. Используйте Memcached или другие методы кэширования и инструменты, которые Memcached экономит ключу vaue пары, проверьте на данные в кэш-памяти.. при наличии используйте его. Если не приносят его от базы данных и затем используют и ловят. Затем свяжите данные, будет доступно от cahe.

Необходимо будет развивать собственную логику и изменить некоторые вопросы. Memcached доступен здесь:

http://memcached.org/

Много обучающих программ имеются в сети

1
добавлено
я не рекомендую memcached "скрыться" плохо разработанный (без надлежащих индексов) столы. походит, чтобы "скрыть мусор под ковром"
добавлено автор jipipayo, источник
я ежедневно использую memcached, но я использую memcached, как только мне точно настроили мои вопросы, и если вы хотите НОВЫЕ данные (данные об отчете, статистика в реальном времени, и т.д.) memcached бесполезен
добавлено автор jipipayo, источник
нет.. databses медленные!! кэширование быстро.. с Facebook, чтобы написать в Твиттере.. все крупнейшие места используют memcached.
добавлено автор geekman, источник
Кэширование было бы бесполезно для заявления на отчет. 1. он доступ привычки те же самые данные часто. 2. кэширование полезен для веб-приложения, чтобы получить доступ к часто используемым данным
добавлено автор Naveen Babu, источник

Быстрое примечание, которое обычно является легкой победой...

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

0
добавлено

У вас есть очень широкий средний размер ряда и 35 колонок. Вы могли попытаться вертикально делить стол, то есть, разделить стол на меньшие столы, которые связаны друг с другом 1:1 с подмножеством колонок от стола. InnoDB хранит ряды на страницах и не эффективен для очень широких рядов.

Если данные - только приложение, рассматривают рассмотрение ЛЬДА.

Вы могли бы также посмотреть на TokuDB, потому что он поддерживает хорошее сжатие.

Можно рассмотреть использование разделения и Вопроса Черепка (http://code.google.com/p/shard-query) к данным о доступе параллельно. Можно также разделить данные больше чем по одному серверу для параллелизма, используя Вопрос Черепка.

0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

dbGeeks
dbGeeks
545 участник(ов)

Чат про базы данных, их устройство и приемы работы с ними. Разрешаются любые адеватные дискуссии в рамках тематики чата.

Разработка СУБД
Разработка СУБД
143 участник(ов)