Ответ 1
Я работал с очень большой (Terabyte +) базой MySQL. Самая большая таблица у нас была буквально более миллиарда строк.
Это сработало. MySQL обрабатывал данные правильно большую часть времени. Это было очень громоздко.
Просто резервное копирование и хранение данных было проблемой. Потребуются дни, чтобы восстановить таблицу, если нам нужно.
У нас было множество таблиц в диапазоне 10-100 миллионов рядов. Любое значительное присоединение к таблицам было слишком трудоемким и длилось бы вечно. Таким образом, мы написали хранимые процедуры, чтобы "ходить" по таблицам и обрабатывать соединения с диапазонами "id". Таким образом мы обрабатывали данные по 10-100 000 строк за один раз (объединение с идентификатором 1-100 000, затем 100 001-200 000 и т.д.). Это было значительно быстрее, чем соединение со всей таблицей.
Использование индексов на очень больших таблицах, которые не основаны на первичном ключе, также намного сложнее. Mysql хранит индексы в двух частях - он хранит индексы (отличные от первичного индекса) в качестве индексов к значениям первичного ключа. Таким образом, индексированные поисковые запросы выполняются в двух частях: первый MySQL переходит к индексу и извлекает из него значения первичного ключа, которые ему нужно найти, затем он выполняет второй поиск индекса первичного ключа, чтобы найти, где эти значения.
В сетке этого показателя для очень больших таблиц (1-200 млн. строк) индексирование таблиц является более ограничительным. Вам нужно меньше простых индексов. И даже простые утверждения select, которые не относятся непосредственно к индексу, никогда не возвращаются. Где предложения должны ударить по индексам или забыть об этом.
Но все, что было сказано, действительно работало. Мы смогли использовать MySQL с этими очень большими таблицами и выполнять вычисления и получать правильные ответы.