MySQL 的一些坑

来源:互联网 发布:淘宝店铺进货虚拟 编辑:程序博客网 时间:2024/05/17 21:43

网上检索未果,近期测试了MySql 存储大字段LONGBLOB对查询的影响。


当存储到了一定量的数据后,发现查询一定数据量的数据时会出现如下情况。

SELECT ID FROM mdc.lr_status_gant where MODE_ID = 'EQUI' and F_ID = 2 and value = 'RUNNING' limit 100;-- 报错-- Error Code: 2013. Lost connection to MySQL server during query
SELECT ID FROM mdc.lr_status_gant where MODE_ID = 'EQUI' and F_ID = 2 and value = 'RUNNING' limit 1;-- 则可以正常返回

分析:
我认为应该是单条数据过大,在查询时,数据库服务一次加入内存进行运算的数据量超过了限制。
虽然可以通过 a.在数据库的MY.INI配置文件中添加max_allowed_packet = 500M 或者 b.限定一次返回的数据量 来解决问题,但是我们在数据库设计时也必须考虑大字段的应用。

附:测试表

CREATE TABLE `lr_status_gant` (  `ID` bigint(20) NOT NULL AUTO_INCREMENT,  `MODE_ID` varchar(45) DEFAULT NULL,  `F_ID` bigint(20) DEFAULT NULL,  `STAT_NAME` varchar(45) DEFAULT NULL,  `VALUE` varchar(45) DEFAULT NULL,  `DATA_TIME` datetime DEFAULT NULL,  `DURATION` int(11) DEFAULT NULL,  `DATA_VALU` longblob,  PRIMARY KEY (`ID`)) ENGINE=InnoDB AUTO_INCREMENT=216748 DEFAULT CHARSET=utf8
0 0
原创粉丝点击