Как я могу знать, что мои данные помещаются в память - PullRequest
0 голосов
/ 03 ноября 2011

Прежде всего, извините за мой английский, я не очень хорош в этом, но сделаю все возможное :) Я прочитал много веб-страниц, описывающих, как быстро они будут помещаться в память,Следующие ссылки являются примером:

http://forums.mysql.com/read.php?22,428030,428157#msg-428157

http://www.mysqlperformanceblog.com/2010/11/19/is-there-benefit-from-having-more-memory/

Хотя я пытался это понять, я все еще не понимаю семантику «вписаться в память»"

У меня есть вопрос, который я хотел бы, чтобы вы объяснили мне следующим образом

1) Как я могу знать, что мой набор данных уже помещается в память, не уверенный, если Mysql имеет некоторыеинструменты или команды, чтобы рассказать нам о том, как данные хранятся в памяти, или вам нужно только догадываться?

2) Я разрабатываю приложение, в котором есть таблица, схема которой выглядит следующим образом:

id (iht) |data1 (varchar (10)) |data2 (varchar (10)) |data3 (текст) |meta1 (int) |meta2 (int) |meta3 (int)

Из приведенной выше схемы минимальное количество байтов, используемых для хранения каждой строки, должно быть int (4) + varchar (10) + varchar (10) + text (2) +int (4) + int (4) + int (4) = 38 байт, что довольно мало.Так что, если у меня даже есть миллион строк, моя память все равно должна удобно вмещать ее, поскольку она занимает всего 38 * 1 000 000 = 38 МБ.

Проблема заключается в столбце data3, тип которого text, так как этот столбец может содержатьбольшое количество данных.Предположим, что data3 всегда будет содержать данные размером 10 КБ. Если бы у меня было миллион строк, это заняло бы (38 + 10 000) * 1 000 000 = 10 038 000 000 или приблизительно десять гигабайт!Конечно, эти данные не помещаются в память.

Поскольку в этой таблице каждую строку можно часто читать или записывать в течение жизненного цикла приложения, я должен рассмотреть возможность перемещения столбца data3 в другую таблицу, чтобыкаждая строка в этой таблице всегда будет маленькой, поэтому она будет храниться в памяти, что приведет к более быстрому чтению и записи?

3) Я считаю, что наличие данных в памяти может помочь вам, когда дело доходит до чтения, я хотел бызнаете, извлечет ли пользу операция записи и как?

Спасибо.

1 Ответ

0 голосов
/ 03 ноября 2011

IIRC, текстовые столбцы в MySQL не всегда полностью сохраняются в памяти (но я могу ошибаться).

И, конечно, если ваши данные достаточно велики, чтобы быть больше, чем доступная память, это делаеттам не подходит.

Важно то, что индексирование вашей таблицы и тот факт, что все индексы помещаются в память.

Надежный способ выяснить это - поэкспериментировать и протестировать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...