MYSQL5,有个数据表,4千9百多万笔记录,怀疑有冗余数据.......
写了个group by + having语句去检查,好家伙,跑了近半个小时(group by字段有索引):的确好多重复数据.....
怎么办?
手工比对删?岂非要死人的节奏??
.....踱步数个来回,决定祭出擅长的PHP,写个脚本,后台执行检查自动删去.......
......逻辑构思完毕......
......代码敲击完毕....
......nohup执行 + tail -f nohup.out.....
半天没任何鸟log信息出来.......
top一下,发现mysql占用内存大幅增加,显然还在数据库处理中......
出去溜达良久.......回来一看,泥妈,蹦出了一行,说啥尝试分配内存失败,超过最大限制(忘记截图了,当时用计算器算了一下,这个上限是448M)......一惊,这都不够?!
反正服务器64G内存,经常闲着近40G呢,不说啥了,直接加大参数吧....
于是在php.ini中加到1024M,心想,单次1G内存,挺大方的吧?
于是再跑......再出去溜达良久......再回来一看,再“”泥妈“”,还是不够!干!!懒得理它,直接加到4096M,这下总该够了吧??
再跑......再溜达......再回来....再“”泥妈“”.....再次加到超乎想象的8192M......
又跑......又溜达......又回来....又“”泥妈“”.....又一次加到史无前例的10240M......
..................杯具之所以为杯具,就因为它绝对不会只出现一次......历史总是会惊人的循环,这背后指的其实就是“杯具”.......
..................直到这一数字被我加到无以复加的20480M.......满怀希望的倒数第二次出去溜达............
..................我得承认自己步伐总是迈的太小,不吃够无数的亏之后,总是无法一次迈个超越宇宙间任何三观的大步......
最后一步,我是绝望了,直接干到40960M.......敲下nohup指令的那瞬间,心情是悲壮的.........不成功,便成仁!!再不行,一向富裕无比的服务器内存也要告枯竭了,只能废掉这个简单的脚本,老老实实构建一个算法分段处理了........可是,可是,可是明天端午啊,我还在想着能早点赶回家去,闻闻粽叶香,抱抱老婆孩子呢!!
上天有好生之德。太阳总是在最黑暗的时候露出曙光!这次也不例外。谢天谢地!就在我即将麻木的时刻,在几乎没有任何思想活动的死寂中,回到办公桌前,毫无人生冷暖可言的视觉系统运动投向到屏幕.......呀!突然生活又充满了阳光!原本寂静无声的世界,似乎一切又重新的鲜活了起来!
wo de tian !!!!
俺的屏幕,就像那久战的黑客,终于攻破了重重的堡垒一般,一行行迅疾翻滚的黑底绿字,简直比世界上任何伟大的交响乐都要更令人喜悦!!!
成功了!!!!
这一刻,俺这颗差点已如枯井般的心,差点就要如婴儿般地欢呼雀跃了起来!!!!
此刻,我最想说的就是:程序猿的快乐,真的是这世界上最为美妙的体验。。。。。
而且,没有之一!
亲爱的朋友,你能体会吗??
不能??别急,俺最后还是截了一张图的,让您也能和我一起,体验到这世界真理发现般似的、超绝人寰的美妙之乐.....
由图可见,该次php单任务,居然占用了不可思议的大32G内存!!而主干代码只有不到20行(围绕着group by出来的结果循环处理而已........
量变引起质变!!
果然是这个宇宙颠灭不破的真理!!
i 服了!!
啥也不说了,执行完毕,立马将上限参数还原回原来认为99%情况下都应该充足的448M.....
......回家啰......
朋友,你呢??
不管怎样,端午节快乐!!