|
|
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
Здравствуйте уважаемые форумчане! Я бы хотел поинтересоваться, насчёт возможностей Mysql. Провести эксперимент пока трудно. Но позже всё обязательно проверю. Ситуация такая. Есть скрипт, который записывает /insert/ в БД Mysql данные каждую секунду. Данные - 70 двузначных чисел. То есть в БД есть таблица с 71 колонкой - id и 70 колонок под эти числа. Есть скрипт, который выводит данные по запросу пользователя - эти 70 чисел. Выбрать первую запись /select * from base where id=1/, тридцатую запись и т.д. Вопрос такой - через какое время лопнет Mysql или накроется сервер? От перегрузки, от переполнения и так далее. А может чем больше размер БД, тем больше ресурсов использует сервер (сам не верю, ну а вдруг)? Место на диске под БД не ограничено. Или такая ситуация в принципе невозможна? И вне зависимости от количества записей в БД, её размера - не будет существенного снижения быстродействия? И ещё вопрос - как будет работать скрипт , который выводит данные по запросу пользователя -/select from base/ если БД огромна и там 10 миллионов записей? Вот такие вопросы. С огромными БД не работал. Записей в БД действительности будет около 40 миллионов, а может и больше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 09:23:50 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11, через соответствующее время лопнет mysql. неужели не понятно ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 12:52:48 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
netwind, В интернете пишут, что обычный лимит у myisam-таблиц 2^32 то есть 4 миллиарда записей. В теории. И БД в среднем достигает 2ГБ. А максимальный размер 4. У меня будет 60 записей в минуту -это около 32 миллионов записей в год. В ограничение 4 миллиарда укладываюсь. Размер базы, исходя из моих данных 140 мб. (не уверен, но должно быть так) В ограничение 4 ГБ укладываюсь. Я даже близко не подошел к теоретическим ограничениям. Почему БД или сервер должны стать неработоспособными, существенно замедлить свою работу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 17:27:57 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11, работа с диском - основной тормоз ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 19:43:58 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
вадя, что вы этим хотели сказать? Базы данных располагаются на диске. Что мускул, что инно, что оракл. Базы данных созданы для хранения множества данных и быстрого доступа к ним. Ваше утверждение не имеет смысла т.к. любая база, ОС, сервис или скрипт, физически размещён на диске. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:04:18 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
зависит от разных факторов: Как эти данные планируется стирать? Какие индексы? Сколько памяти выделено под индексы? Как часто и какие делаются селекты? Возможно, вам следут обратить внимание на RRD-подобные базы данных, т.к. mysql подходит не для всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:06:59 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11любая база, ... физически размещён на диске.Вовсе нет, не любая. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:07:54 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11лопнет Mysql или накроется сервер?Ни того, ни другого не бывает. Лопнуть может терпение у пользователей и по этой причине накрыться ваша премия на работе. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:09:33 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11В интернете пишут, что обычный лимит у myisam-таблиц 2^32 то есть 4 миллиарда записей. В теории.Неверно. Даже в теории. И читать нужно не "в интернете", а в документации - Limits on Table Size useruser11И БД в среднем достигает 2ГБ. А максимальный размер 4.На размер БД нет ограничения. См. Limits on Number of Databases and Tables . Ну, если кратко, ваши 40 миллионов записей - не так уж и много. Возможно, даже в оперативку целиком влезет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:16:23 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
авторА максимальный размер 4. он про старый FAT прочитал наверно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:27:36 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
ScareCrowавторА максимальный размер 4. он про старый FAT прочитал наверно.Даже в старом FAT-е в MyISAM нет ограничения на размер БД. На таблицу - есть, но не на БД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 20:29:48 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11Или такая ситуация в принципе невозможна? И вне зависимости от количества записей в БД, её размера - не будет существенного снижения быстродействия? Существенное снижение быстродействия начнется когда начнет нехватать внутрених кэшей для индексов и данных и понадобится читать их с диска, хотя это тоже может зависеть от типа таблиц. Но вцелом это решается наращиванием памяти до необходимого значения, и подправкой mysql-конфигов. useruser11И ещё вопрос - как будет работать скрипт, который выводит данные по запросу пользователя -/select from base/ если БД огромна и там 10 миллионов записей? 10млн записей это не много, и если выбирается только 1 запись, или смежные записи, то большинство таких запросов можно ожидать, что, будут работать быстро. useruser11Вот такие вопросы. С огромными БД не работал. Записей в БД действительности будет около 40 миллионов, а может и больше. Ну так набиваете базу случайными данными, пишите прожку, которая делает эти инсерты, старое стирает. И которая делает селекты. И смотрите, как оно работает. Но повторюсь: если у вас эти 70 чисел - это что-то типа данных с 70 термометров (или других датчиков), которые приходят с определенным периодом, то как правило mysql - это далеко не самое лучшее решение. Лучше смотреть на RRD или даже писать свои велосипеды. Это я говорю как человек, которому в итоге пришлось податься в велосипедостроение, и достичь гораздо более лучших результатов. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 21:00:25 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11, вы вообще не понимаете как работает sql. но это нормально! потому sql он создан специально чтобы вы этого не понимали ! sql формулирует КАКИЕ данные вы хотите получать, но при этом оставляет свободным способ их получения - план работы запроса. Некоторое время программист может использовать sql, но однажды этот вопрос встает ребром.И вот тут уже придется изучать индексы, планы, реальные характеристики железа, чтобы осознать утверждение "работа с диском - основной тормоз". Даже если вы во всем это разберетесь, точно спрогнозировать возможности своей системы, вряд ли сможете. Однако сможете куда-то двигаться и использовать нагрузочное тестирование. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.06.2014, 22:42:09 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
Спасибо за ответы. Уточню - данные не удаляются. Нужны данные за прошлый месяц, год. Но можно сделать с ожиданием. В 90% случаев - выборка select -это смежные значения. Сейчас вижу такие варианты решения Вопрос в "маштабе". 1 Вариант Хранить все данные за год в одной базе. Каждый год создавать новую базу. 1 база, 1 таблица с данными - всего 31 104 000 строк. 2 Вариант Хранить все данные за год в одной базе. Каждый год создавать новую базу. Хранить все данные за текущий месяц в одной таблице. Каждый месяц создавать новую таблицу. 1 база, 12 таблиц с данными - всего 31 104 000 строк, в каждой таблице 2 592 000 строк 3 Вариант Хранить все данные за месяц в одной базе. Каждый месяц создавать новую базу. 1 база, 1 таблица с данными - всего 2 592 000 строк. 4 Вариант Хранить все данные за месяц в одной базе. Каждый месяц создавать новую базу. Хранить все данные за текущий день в одной таблице. Каждый день создавать новую таблицу. 1 база, 365 таблиц с данными - всего 2 592 000 строк, в каждой таблице 86 400 строк. Какой из вариантов лучше? И в принципе, соседство большой базы (пусть с 40 млн строк и размером 2Гб) с другой базой влияет на работу-быстродействие другой базы? Если большая база лежит "мёртвым грузом" и к ней нет обращения. А с другой базой идёт работа. PS chabapok, вы правы. Но на данном этапе я не могу писать велосипеды. И насчёт программы вы правы. Но сначала, перед тестами, надо понять какой вариант тестировать. Иначе тесты может не хватить времени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 08:37:26 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11Спасибо за ответы. Уточню - данные не удаляются. Нужны данные за прошлый месяц, год. Но можно сделать с ожиданием. В 90% случаев - выборка select -это смежные значения. Так а вы сделайте чтобы удалялись. Если бы вы все-таки начали смотреть на rrdtools, то обнаружили бы, что там навязывают предагрегацию - данные за прошлый месяц хранятся, но интервал суммируется и хранится уже сумма за каждый день, например. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 11:00:51 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
netwind, "rrdtools, то обнаружили бы, что там навязывают предагрегацию - данные за прошлый месяц хранятся, но интервал суммируется и хранится уже сумма за каждый день, например." - это что-то сложное. Погуглил - Цитата из интернета -- RRD – это кольцевая база данных. Главная особенность данной БД заключается в том, что она всегда имеет фиксированный размер. То есть когда, будет достигнут конец в каком-нибудь поле в такой БД, то данные будут записываться в самое начало, тем самым, затирая предыдущие. -- Мне нужны все данные. Никакие данные не должны быть стёрты. Работа в 90% случаев, будет производится с последними данными, записями. Но иногда нужно просмотреть "архив". Выгружать "архив" в файл по принципу дампа - плохой вариант. Желательно всё хранить в базе. Пока, я хочу сделать всё проще. Скорее всего, сделаю по четвёртому варианту 4 Вариант Хранить все данные за месяц в одной базе. Каждый месяц создавать новую базу. Хранить все данные за текущий день в одной таблице. Каждый день создавать новую таблицу. 1 база, 365 таблиц с данными - всего 2 592 000 строк, в каждой таблице 86 400 строк. Зачем усложнять задачу на данном этапе, когда этот вариант не вызовет проблем? Ведь не вызовет? :-) Для начала мне нужно минимум проблем-глюков, лагов. И простая структура базы. А когда понадобится что-то большее, специфическое- то я возможно сменю базу. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 12:38:58 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
авторКакой из вариантов лучше? хранить все данные в одной базе. подумать о партиционировании. хотя сомневаюсь что оно вам надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 14:24:37 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
useruser11, я не предлагал использовать rrdtools. я предлагал посмотреть на него и сделать подобное в mysql, из-за того что что еще один человек вам это предлагал и это выглядит убедительнее. там важно не то что данные стираются, а то как они объединяются. Кстати, требования какого федерального закона запрещают вам удалять данные ? Если такового нет, значит вы всегда можете это изменить и найти компромисс между стоимостью. А то вы как-то нетипично размышляете. Mysql-то все выдержит! вопрос на самом деле в том, сколько ваш кошелек выдержит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 16:39:21 |
|
||
|
Большая база и частые запросы
|
|||
|---|---|---|---|
|
#18+
Ну, предагрегация в rrdtool - штука настраиваемая. Можно писать и по одному значению. Недостаток rrdtool - у него не может быть дискретности меньше 1сек, т.к. используется time_t. Вы все время пишите в базу, но никогда не стираете, при этом селекты в основном идут на последних данных? Я бы тогда писал в табилцы по суткам, но это надо проверять, пробовать и смотреть. Могут быть подводные камни. Если большая база лежит "мёртвым грузом" и к ней нет обращения. А с другой базой идёт работа. то обычно она на быстродействие не влияет, однако 1 запрос к ней, когда его сделают, может сильно подвесить остальные базы. Хотя тут тоже зависит от разных факторов. Надо пробовать. не предлагал использовать rrdtools. я предлагал посмотреть на него и сделать подобное в mysql Моя практика показала, что эмулить rrd через mysql - довольно плохая идея. Но у меня данные шли в десятки раз чаще, чем раз в секунду. Вообще надо смотреть на специфику данных и решать какой инструмент нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.06.2014, 17:51:35 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38659125&tid=1834732]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
65ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
71ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 379ms |

| 0 / 0 |
