LINUX.ORG.RU

mysql таблицы в памяти


0

0

Потребовалось мне чтобы таблица лежала в памяти, создаю ее по типу CREATE TABLE t (i INT) ENGINE = MEMORY;
копирую данные из той что обычная туда по типу
INSERT INTO tbl_temp2 (fld_id)
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100;

Он копирует примерно половину записей и говорит #1114 - The table 'data_keyword_number_memory' is full. Исходная таблица порядка 30мб. Как мне ее полностью скопировать? Заранее благодарю за ответ.
П.С. мускуль 5.1.

★★

Документацию читать, к примеру это:
The maximum size of MEMORY tables is limited by the max_heap_table_size system variable, which has a default value of 16MB. To have larger (or smaller) MEMORY tables, you must change the value of this variable.

zJes ★★ ()

А чем temporary table не подходит? MySQL будет стараться держать её в памяти (аналог HEAP), если она будет слишком большой — автоматом преобразует в дисковую таблицу (MyISAM).

sjinks ★★★ ()
Ответ на: комментарий от sjinks

zJes , спасибо большое.
sjinks, вот пытался найти книжки где описывался бы синтаксис create temporary table но что-то не нашел и списал что когда-либо это слышал на глюк, буду смотреть дальше:) Спасибо.

DDR ★★ ()
Ответ на: комментарий от DDR

Да то же самое, что и CREATE TABLE, только со словом TEMPORARY.

Применительно к примеру —

CREATE TEMPORARY TABLE t AS
SELECT tbl_temp1.fld_order_id
FROM tbl_temp1 WHERE tbl_temp1.fld_order_id > 100
sjinks ★★★ ()
Ответ на: комментарий от DDR

>вот пытался найти книжки где описывался бы синтаксис create
а чем официальный мануал не угодил? Я больше ничем и не пользуюсь

nu11 ★★★★★ ()
Ответ на: комментарий от DDR

если хочешь и дальше заниматься базами данных и прочими IT, то инглишь жизненно необходим. Учи пока не поздно

nu11 ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.