Работа с огромной базой более 100 млн. строк
Обсуждаются возможности шардинга и масштабирования базы данных для повышения производительности проекта
Идей сколько угодно. Нет понимания задачи.
Вы в курсе, что одновременный запрос в две базы данных возможен только в случае, если обе базы на одном сервере и у них один пользователь?
Поэтому "связывать" базы возможно только при помощи php. И это будет очень небыстро.
mr.KEVASC,
Идей сколько угодно. Нет понимания задачи.
Вы в курсе, что одновременный запрос в две базы данных возможен только в случае, если обе базы на одном сервере и у них один пользователь?
Поэтому "связывать" базы возможно только при помощи php. И это будет очень небыстро.
Почему это на одном сервере? Что за глупости? ))) Это где такое нашли? ) Почему нет понимания задачи, надо join' ить несколько таблиц для сборки с разных серверов, или разбивать и обрабатывать по отдельности, может через node.js можно? может кто пробовал
Напишите умность.Что за глупости? ))) Это где такое нашли? )
Например код php, который сделает селект из двух баз на разных серверах.
Напишите умность.Что за глупости? ))) Это где такое нашли? )
Например код php, который сделает селект из двух баз на разных серверах.
Вроде зайти на оф сайт и почитать не проблема. Может что-то не понимаю.
CREATE TABLE federated_table ( id INT(20) NOT NULL AUTO_INCREMENT, name VARCHAR(32) NOT NULL DEFAULT '', other INT(20) NOT NULL DEFAULT '0', INDEX name (name), INDEX other_key (other) ) ENGINE=FEDERATED DEFAULT CHARSET=utf8mb4 CONNECTION='mysql://fed_user@remote_host:9306/federated/test_table';
P.S. Тут идет создание таблицы с завязкой на другом сервере. В том примере, что выше.
Ответ MySQL: Документация
#1286 — Unknown storage engine 'FEDERATED'
----------------------------------------------------------------
Хотя… добавил federated в my.ini — работает.
Подцепился к удаленной базе. Селект работает нормально.
----------------------------------------------------------------
Инсерт тоже нормально работает. Добавил юзера в cms_users на локальном сервере и вошел под этим юзером на удаленном сайте.
И апдейт тоже нормально работает. Менял новому юзеру группы и никнейм.
Чем отличается выборка от селекта?работает ли на таком выборка, точно знаю что select и update работает норм
mr.KEVASC,
Ответ MySQL: Документация
#1286 — Unknown storage engine 'FEDERATED'
----------------------------------------------------------------
Хотя… добавил federated в my.ini — работает.
Подцепился к удаленной базе. Селект работает нормально.
Чем отличается выборка от селекта?работает ли на таком выборка, точно знаю что select и update работает норм
Выборка по факту это связывание разных таблиц и получение конечного результата за один запрос.
Необходимо сделать join по таблице которая стоит в основной и удаленной базе. Необходимо понимание скоростей перебора больших массивов. И обработка в данном случае идет в основной баде и используются ресурсы основного сервера, или идет переброс на второй сервак.
Таблица, которая подключена к другой таблице — это практически одна таблица, только разнесенная по разным серверам. Джойнить её саму к себе не нужно. Можно точно так же подключить все таблицы в базе, тогда можно будет джойнить что угодно к чему угодно.Необходимо сделать join по таблице которая стоит в основной и удаленной базе.
Тут на родном-то сервере выборка из миллиона строк периодически захлебывается на лимит оффсете, а Вы хотите по сетке таскать сто миллионов...Необходимо понимание скоростей перебора больших массивов.
Завтра поэкспериментирую. Сделаю полностью сайт, где все таблицы будут подключены к удаленному тестовому серверу. Посмотрю, как выборка миллиона комментариев будет выглядеть...
-----------------------------------------------------------------
Простой SELECT * FROM `comments` занял 31 секунду.
Отображение строк 0 — 49 (1075562 всего, Запрос занял 31,0000 сек.)
Какая к чертям скорость?
Таблица, которая подключена к другой таблице — это практически одна таблица, только разнесенная по разным серверам. Джойнить её саму к себе не нужно. Можно точно так же подключить все таблицы в базе, тогда можно будет джойнить что угодно к чему угодно.Необходимо сделать join по таблице которая стоит в основной и удаленной базе.
Тут на родном-то сервере выборка из миллиона строк периодически захлебывается на лимит оффсете, а Вы хотите по сетке таскать сто миллионов...Необходимо понимание скоростей перебора больших массивов.
Завтра поэкспериментирую. Сделаю полностью сайт, где все таблицы будут подключены к удаленному тестовому серверу. Посмотрю, как выборка миллиона комментариев будет выглядеть...
-----------------------------------------------------------------
Простой SELECT * FROM `comments` занял 31 секунду.
Отображение строк 0 — 49 (1075562 всего, Запрос занял 31,0000 сек.)
Какая к чертям скорость?
Это очень долго, у вас проблемы с настройками по базе походу, у меня выборка из 10м занимает не более 1с. и том что всё это ещё работает с join по 4 таблицам. И вполне может быть узким местом будет ещё жесткий диск, я такие проекты только на SSD рассматриваю, чтобы ж.д. небыл камнем преткновения.
Почему это на одном сервере? Что за глупости? ))) Это где такое нашли? ) Почему нет понимания задачи, надо join' ить несколько таблиц для сборки с разных серверов, или разбивать и обрабатывать по отдельности, может через node.js можно? может кто пробовал
единственное, пока, вижу решение —
писать апи интерфейсы для каждой из баз
а потом с ними работать