MySQL的文本字段和内存使用情况
-
26-09-2019 - |
题
我工作的一个应用程序,允许用户动态地添加问题,以网页形式。我们使用了MySQL作为后台,我试图找到存储表单数据的最快,最有效的方式。
此前,我们存储在为每个表单部分一个单独的表中的数据。列是根据,使我们能够映射到其存储位置的动态问题的系统命名。的缺点是,所述存储映射系统被设计不良,这使得修改与现有的数据形式的梦魇。此外,在每行内存MySQL的局限性的限制我们可以有每部分的问题数量。
因此,我期待在使用单个表以包含所有形式的数据。由于论述题是允许的,我使用的文本或MEDIUMTEXT作为字段类型的实际数据的考虑。但是,我在运行查询时关注RAM使用。当我运行一个用于数据的查询,将MySQL的是足够聪明的分配只需要在该领域的数据(即使是一个小的整数)或将其分配允许的MEDIUMTEXT场?
此外,是否有你能想到的有关于存储数据像这样的动态数据库更好的办法?
艾米
解决方案
是的,当你创建用于存储这些大的文本字段的表对象,尝试在你的表使用压缩。这听起来像一个完美的结合,如果你启用了InnoDB的插件。
HTTP:// dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-compression-tuning-when-data.html http://dev.mysql.com/doc/innodb-plugin/1.0/en/innodb-compression-usage.html
您的回答简单的表定义可能是这样的:
CREATE TABLE test_answers (
answer_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
test_id INT UNSIGNED,
question_id INT UNSIGNED,
answer_body TEXT,
PRIMARY KEY(answer_id, question_id)
) ENGINE=InnoDB
ROW_FORMAT=COMPRESSED
KEY_BLOCK_SIZE=4;
其他提示
可能会逃脱中等规模的文本字段,但通常更好大字段存储在一个单独的表。
不隶属于 StackOverflow