话说一紧急项目,哥手一抖,就把图片存到 mysql 里面了,现在发现问题。

2015-01-13 11:38:39 +08:00
 flash866

把三个月的项目周期压缩到2周了,于是哥手抖了,图片一律进了MySQL。
现在项目上线了,问题出在list页面(PS:列表中哥分页都来不及搞),本来如果是纯文字性的列表是不会有问题的,但是因哥实在是贱,这种情况下还在考虑用户体验,在列表中加了个图片预览列,虽然用户叫好了,但是数据库动不动就报 Mysql gone away。

因为用户已经看到界面,所以现在无法在去掉那个图片列字段。

我想了下,问题应该是出在显示list页面时,取出的数据量过于庞大(图片每个大概1M,初始阶段,大概100条数据左右,这样每次一个select后占用的内存在100M左右)。

还有救没?

4813 次点击
所在节点    PHP
27 条回复
mhycy
2015-01-13 11:39:32 +08:00
除了立刻搬出来还能咋样?
xiaogui
2015-01-13 11:40:23 +08:00
搬出来也很简单的吧。
cevincheung
2015-01-13 11:42:22 +08:00
立刻搬出……
zzNucker
2015-01-13 11:42:22 +08:00
半夜搬出来吧。。。。
knightluffy
2015-01-13 11:44:22 +08:00
图片存数据库,你也是醉了。。
coolwind
2015-01-13 11:53:06 +08:00
临时 试一试 mysql配置加大 max_allowed_packet = 128M

然后把图片移出mysql
SoloCompany
2015-01-13 12:37:04 +08:00
可以不一次select啊,比如只select前256字节,读取meta比如图片长宽等等,然后在前端滚动到位置的时候才显示图片
billwang
2015-01-13 13:05:21 +08:00
楼主可知道,现在很多生产环境系统都把二进制文件存入数据库中,只不过是oracle数据库。如果迁出最好接入类似于非结构化平台中去。
Mac
2015-01-13 13:24:34 +08:00
既然还没交付,改成upload到目录有什么难处么?预览也很简单啊,缩略图即可
em70
2015-01-13 13:30:41 +08:00
分页的话也没问题吧
Actrace
2015-01-13 13:37:39 +08:00
一个是管道的size限制,一个是整取。
在管道限制不大的情况下,如果多行记录一次无法取出,可以在逻辑上单独去取图片数据,一行一行的取,反正有主键也是瞬间的事情。
huigeer
2015-01-13 13:46:21 +08:00
醉了, mysql: 怪我咯
feiyuanqiu
2015-01-13 13:55:50 +08:00
写脚本搬吧...另外这满篇的「哥」看的真是不舒服
akira
2015-01-13 14:02:24 +08:00
图片列字段必须去掉,换成存图片目录或者图片url吧。
jianghu52
2015-01-13 14:14:43 +08:00
那不如你先老实儿的把分页做了,这样的话查询,加载啥的都会轻松点吧。
sun1991
2015-01-13 14:26:41 +08:00
再加一列thumbnail, 存放小图. 预览的时候读小图而不是原始尺寸.
lbp0200
2015-01-13 14:50:39 +08:00
16楼+1
cevincheung
2015-01-13 14:52:34 +08:00
mongodb-gridfs+nginx-gridfs 你绝逼需要
cst4you
2015-01-13 14:53:17 +08:00
跑个批处理把图片select出来然后保存到文件即可...楼主别懒
y10n
2015-01-13 17:34:32 +08:00
select * 惹祸了

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/161671

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX