Поведение Memsql, если оперативная память полностью используется

поэтому в настоящее время я пытаюсь оценить memsql как вариант базы данных для нашего конвейера реального времени. У меня было одно сомнение, скажем, мы используем row-store для наших таблиц, и вдруг происходит всплеск событий, и мы не можем обрабатывать все в памяти. Будет ли он проливаться на диск или какое поведение он проявит в таком сценарии. Спасибо


person abstractKarshit    schedule 10.08.2016    source источник


Ответы (3)


Вы спрашиваете о запросах, потребляющих временную память, или пишете запросы, заполняющие таблицы в объеме памяти?

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

Если запросы на запись заполняют таблицы rowstore до полного объема памяти, они начнут возвращать ошибку, и вам придется либо увеличить объем памяти, либо удалить некоторые данные. (В качестве альтернативы вы можете рассмотреть возможность использования таблиц columnstore на диске, в зависимости от вашей рабочей нагрузки.)

person Jack Chen    schedule 10.08.2016
comment
Я говорю о вставке. Вставка данных в таблицы, скажем, из Кафки. - person abstractKarshit; 30.06.2017

Я думаю, что вопрос в том, «Хранит ли memsql все данные rowstore в памяти»?

Я тоже делаю аналогичную оценку и не могу найти ответ (пока) в документации memsql.

Но исходя из моего личного опыта, похоже, что ВСЕ таблицы ROWSTORE ХРАНЯТСЯ ТОЛЬКО В ПАМЯТИ. Поэтому, если из-за этого некоторым из ваших листовых узлов не хватает памяти, вам не повезло. Пишите в COLUMNSTORE (к тому времени вы могли бы также использовать ParAccel, Vertica или Greenplum).

Я думал, что memsql будет достаточно умным, чтобы сохранять некоторые данные rowstore на диск.

person david1977    schedule 29.06.2017

Да, все данные rowstore должны помещаться в памяти. Это одна из причин, почему хранилище строк MemSQL намного быстрее, чем традиционное хранилище строк на диске (см. указатель списка пропусков MemSQL для более подробной информации). Системная переменная maximum_table_memory определяет, сколько памяти MemSQL позволит использовать в таблицах, прежде чем начнет отклонять запросы на запись (см. Документация по управлению памятью MemSQL.

person Adam Prout    schedule 02.07.2017