把三个月的项目周期压缩到2周了,于是哥手抖了,图片一律进了MySQL。
现在项目上线了,问题出在list页面(PS:列表中哥分页都来不及搞),本来如果是纯文字性的列表是不会有问题的,但是因哥实在是贱,这种情况下还在考虑用户体验,在列表中加了个图片预览列,虽然用户叫好了,但是数据库动不动就报 Mysql gone away。
因为用户已经看到界面,所以现在无法在去掉那个图片列字段。
我想了下,问题应该是出在显示list页面时,取出的数据量过于庞大(图片每个大概1M,初始阶段,大概100条数据左右,这样每次一个select后占用的内存在100M左右)。
还有救没?
1
mhycy 2015 年 1 月 13 日
除了立刻搬出来还能咋样?
|
2
xiaogui 2015 年 1 月 13 日
搬出来也很简单的吧。
|
3
cevincheung 2015 年 1 月 13 日
立刻搬出……
|
4
zzNucker 2015 年 1 月 13 日
半夜搬出来吧。。。。
|
5
knightluffy 2015 年 1 月 13 日
图片存数据库,你也是醉了。。
|
6
coolwind 2015 年 1 月 13 日
临时 试一试 mysql配置加大 max_allowed_packet = 128M
然后把图片移出mysql |
7
SoloCompany 2015 年 1 月 13 日 via Android 可以不一次select啊,比如只select前256字节,读取meta比如图片长宽等等,然后在前端滚动到位置的时候才显示图片
|
8
billwang 2015 年 1 月 13 日
楼主可知道,现在很多生产环境系统都把二进制文件存入数据库中,只不过是oracle数据库。如果迁出最好接入类似于非结构化平台中去。
|
9
Mac 2015 年 1 月 13 日
既然还没交付,改成upload到目录有什么难处么?预览也很简单啊,缩略图即可
|
10
em70 2015 年 1 月 13 日 via Android
分页的话也没问题吧
|
11
Actrace 2015 年 1 月 13 日
一个是管道的size限制,一个是整取。
在管道限制不大的情况下,如果多行记录一次无法取出,可以在逻辑上单独去取图片数据,一行一行的取,反正有主键也是瞬间的事情。 |
12
huigeer 2015 年 1 月 13 日
醉了, mysql: 怪我咯
|
13
feiyuanqiu 2015 年 1 月 13 日
写脚本搬吧...另外这满篇的「哥」看的真是不舒服
|
14
akira 2015 年 1 月 13 日
图片列字段必须去掉,换成存图片目录或者图片url吧。
|
15
jianghu52 2015 年 1 月 13 日
那不如你先老实儿的把分页做了,这样的话查询,加载啥的都会轻松点吧。
|
16
sun1991 2015 年 1 月 13 日 再加一列thumbnail, 存放小图. 预览的时候读小图而不是原始尺寸.
|
17
lbp0200 2015 年 1 月 13 日
16楼+1
|
18
cevincheung 2015 年 1 月 13 日
mongodb-gridfs+nginx-gridfs 你绝逼需要
|
19
cst4you 2015 年 1 月 13 日
跑个批处理把图片select出来然后保存到文件即可...楼主别懒
|
20
y10n 2015 年 1 月 13 日
select * 惹祸了
|
21
kaneg 2015 年 1 月 13 日 via iPhone
用缓存。类似的设计以前做过,当时是文本转换图片。在第一次访问的时候把内容load出来后写到文件中去,之后访问先查文件在不在,在的话直接redirect过去。
|
22
Daghlny 2015 年 1 月 13 日
以前在学校做项目的时候就把图片加进mysql了。。。
网址:123books.sinaapp.com |
24
atan 2015 年 1 月 14 日
可以用类似select2那样的组件,支持ajax加载,一次只加载10条,滚动下去后再加载10条。。。
|
25
zeayes 2015 年 1 月 14 日
趁现在数据量还不是很大,赶紧迁移出来吧。图片、视频这样的东西还是存文件系统比较好。
|
27
Tianpu 2015 年 1 月 16 日
thumbnail存数据库挺合理的,然后用data uri,简直是最优解
大图没有必要存数据库 |