最近由于某大型网站社区论坛运行效率比较低用户反馈论坛有些卡需要对系统进行优化,论坛性能影响了公司的形象还有网站的流量,当然这也会影响到公司的收入,而且后期还需要长期维护网站的社区论坛服务。

1:并发访问的人多,其实访问的人少,偶尔才被请求几次页面,那是性能一般不会受到多少影响,也没什么技术高要求凑合能用就可以了。

2:数据量庞大,访问的人多了,自然数据积累也多了,持续几年每天上千人留言后,这数据量就很庞大了。

3:系统稳定运行了好几年,不能轻易修改,积累了不少个性化的业务数据、个性化的程序逻辑,也无法说更换论坛就可以更换论坛了,把这些逻辑都重新编写一遍也不是那么容易的。

4:普通ASP编写的程序,技术有些老旧,不太好进行缓存优化,一些比较好用的asp.net的技术积累派不上用处。

5:硬件服务器成本需要控制,若是没有预算限制,购买个超级强大的硬件服务器,程序写得稍微垃圾也没啥大问题,但是你这次购买了比较强大的服务器,1年后还需要买更强大的服务器才可以抵御性能的下降,这个办法几乎是无节制的,若购买硬件服务器的费用节省了,可以聘请更优秀的开发人员为公司服务了,那不是更理想了。

其实这些事情对专业的DBA来说是小菜一碟,对我们平时以开发为主的程序员来说,优化上千万条数据有时候就力不从心了。很多小公司难养得起一个专业数据库DBA,专业DBA也不愿去平时没事干的小公司工作,就是去了也会慢慢的水平退化,因为平时没事情干没啥动力挑战一个接一个的极限。

遇到的难题主要有这些:

1:当服务器有性能问题时,无法远程操控。

2:现有的业务系统不能影响。

3:当服务器有性能问题时,做一个动作优化很困难,无法连续做好好几个动作。

4:适当数据库量庞大时,管理器无法用,只能通过编写脚本进行处理。

5:数据量庞大时,一个动作可能需要2个小时才能完成,若一晚上做错几个动作,白忙一晚上了。

6:对现有的业务系统不熟悉。

7:对现有的论坛的功能,性能都不熟悉。

8:对ASP程序已经很陌生了。

9:天天在经营的网站不能被停机。

10:时间紧急,需要在几天时间里处理好。

11:没有强大的测试环境,不大可能有那么多好服务器。

12:数据量大,本地没数据,数据都在服务器上,下载30G数据也不容易。

13:系统的功能也多,SQL语句也多,某个语句出错后起连锁反应,整个系统就崩溃,无法调试,无法控制,相对棘手一些。

14:别人能相信你,甚至鉴定的相信你,你有能力优化大数据的性能,也是需要勇气的。

解决系统性能的方法,主要通过下面的方式:

1:周末加班,因为周末有安静的环境可以分析数据,网站的流量也不大,恶劣的影响少一些。

2:深夜导数据,服务器性能好,效率高。

3:深夜优化数据结构,服务器性能好,效率高。

4:找帮手一起协助,有时候1个人顾得里前面顾不来后面,人多力量大,特别是能干活儿,技术过硬的家伙。

其中一个大表里有13551695条数据,已经彻底上千万条了。

检查服务的各项性能

监视服务器上运行得所有SQL脚本,重点优化性能有问题的语句,通过修改ASP源程序进行优化。

在查询分析器里,分析语句的各项性能

修改数据类型,尽量用更短的数据类型,减少数据库的磁盘占用空间

由于我们采用的是完整备份,这部分也跟金额没多大影响的数据库,所以采用简单模式,减少日志容量

收缩数据库,减轻硬盘占用的多余空间,备份数据库时可以节约一些硬盘空间

对大数据进行了分区处理,这样也可以减轻数据库的压力,合理的分区可以显著提升系统的性能。

索引有碎片时可以重新进行索引,提高数据库的运行性能

经过优化后,数据库的大小变成了原先的1/3,从接近30G,变成了10来G了,后来优化的到10G了。

经过3天的优化,服务器的性能消耗终于降下来了,不会100%了,谢天谢地,总算没白折腾3天,也算可以给公司一个交代了,昏睡了整整一天,才稍微缓过劲儿来,年纪大了,不能总干通宵了。真不是25岁那个时候了。

这个论坛书库的服务器也很强大了,有16个CPU了,12G内存了,否则还真跑不来这么多大的并发大数据的需求。

总结:

01:干活需要有激情,不能逃避责任,需要勇于挑战一个个职业上的极限。

02:前10年的技术积累,经验积累是为了将来10年的工作打基础的,没前10年的努力,不会有今天的小成功。

03:技术上露一手的机会不是天天有,但是露一次可以解决2-3年的问题。

04:需要有良好的身体,通宵干活,持续2天,也打不垮的身体,当然累了需要好好休息一下。

05:要有坚强的意志,遇到什么困难都不能慌,有计划有目的的一个个摆平,你的意志倒下,别人都跟风全趴下了。

06:不仅要能说,能写,更需要能经得起实战,是骡子是马出来溜一溜就知道了。

07:水平再好,水平再差,需要有表达能力,能抓老鼠就是好猫,解决问题了就是技术牛人。

08:别人怎么打击怎么鄙视怎么辱骂,那是别人的事情,自己的日子需要自己过,走自己的路让别人打击去吧,需要有强劲的内心,经得起任何打击、开开心心过自己的日子

09:写文章的好处就可以得到网上各种高手的指点,更容易得到提高。

1300多万条数据30G论坛大数据优化实战经验小结的更多相关文章

  1. 使用rowid抽取数据方法以及大数据量游标卡住的应对

    平时工作的时候,经常会遇到这种事情,从一个大表A中,抽取字段a在一个相对较小B的表的数据,比如,从一个详单表中,抽取几万个用户号码的话单出来.这种时候,一般来说, 做关联查询: create tabl ...

  2. Hadoop! | 大数据百科 | 数据观 | 中国大数据产业观察_大数据门户

        你正在使用过时的浏览器,Amaze UI 暂不支持. 请 升级浏览器 以获得更好的体验! 深度好文丨读完此文,就知道Hadoop了! 来源:BiThink 时间:2016-04-12 15:1 ...

  3. bat坐拥大数据。数据挖掘/大数据给他们带来什么。

    阿里巴巴CTO即阿里云负责人王坚博士说过一句话:云计算和大数据,你们都理解错了.   实际上,对于大数据究竟是什么业界并无共识.大数据并不是什么新鲜事物.信息革命带来的除了信息的更高效地生产.流通和消 ...

  4. 第二篇:智能电网(Smart Grid)中的数据工程与大数据案例分析

    前言 上篇文章中讲到,在智能电网的控制与管理侧中,数据的分析和挖掘.可视化等工作属于核心环节.除此之外,二次侧中需要对数据进行采集,数据共享平台的搭建显然也涉及到数据的管理.那么在智能电网领域中,数据 ...

  5. Oracle数据库--解决单张表中数据量巨大(大数据、数据量上百万级别,后查询,更新数据等耗时剧增)

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/QQ578473688/article/details/54561397 思路1:采用备份表 备份表中 ...

  6. Hadoop大数据学习视频教程 大数据hadoop运维之hadoop快速入门视频课程

    Hadoop是一个能够对大量数据进行分布式处理的软件框架. Hadoop 以一种可靠.高效.可伸缩的方式进行数据处理适用人群有一定Java基础的学生或工作者课程简介 Hadoop是一个能够对大量数据进 ...

  7. 利用 StartLoadingStatus 和 FinishLoadingStatus 读取数据特别是大数据时增加渐隐渐显等待特效 - Ehlib学习(三)

    代码很简单: DBGrideh.StartLoadingStatus(' Loading ... '); Sleep(500); DBGrideh.FinishLoadingStatus; 做下变动: ...

  8. chinacloud大数据新闻

    2015年大数据发展八大趋势   (0 篇回复) “数据很丰满,信息很骨感”:Sight Machine想用大数据的方法,打碎两者间的屏障   (0 篇回复) 百度携大数据"圈地" ...

  9. 大数据及hadoop相关知识介绍

    一.大数据的基本概念 1.1什么是大数据 互联网企业是最早收集大数据的行业,最典型的代表就是Google和百度,这两个公司是做搜索引擎的,数量都非常庞大,每天都要去把互联网上的各种各样的网页信息抓取下 ...

随机推荐

  1. vysor原理以及Android同屏方案

    vysor是一个免root实现电脑控制手机的chrome插件,目前也有几款类似的通过电脑控制手机的软件,不过都需要root权限,并且流畅度并不高.vysor没有多余的功能,流畅度也很高,刚接触到这款插 ...

  2. LeetCode(15):三数之和

    Medium! 题目描述: 给定一个包含 n 个整数的数组 nums,判断 nums 中是否存在三个元素 a,b,c ,使得 a + b + c = 0 ?找出所有满足条件且不重复的三元组. 注意:答 ...

  3. CF1063A 【Oh Those Palindromes】

    考虑在一个部分串中加入字符使得最终构造的串回文子串最多的方案 考虑简单情况,对于只含一种元素的串,我们要插入其他元素 记原有元素为$a$,新加元素为$b$ 考虑$b$的最优插入位置 原串$aaaa.. ...

  4. C#获取特定进程CPU和内存使用率

    首先是获取特定进程对象,可以使用Process.GetProcesses()方法来获取系统中运行的所有进程,或者使用Process.GetCurrentProcess()方法来获取当前程序所对应的进程 ...

  5. mysql的完整卸载

    一.卸载MySQL数据库 1.检查mysql服务并关闭服务进程 (1)登录Linux后执行service mysqld status 或者service mysql status命令查看MySQL服务 ...

  6. hdu 5003 模拟水题 (2014鞍山网赛G题)

    你的一系列得分 先降序排列 再按0.95^(i-1)*ai 这个公式计算你的每一个得分 最后求和 Sample Input12530 478Sample Output984.1000000000 # ...

  7. Authentication(Spring Security 认证笔记)

    这篇文章是对Spring Security的Authentication模块进行一个初步的概念了解,知道它是如何进行用户认证的 考虑一个大家比较熟悉的标准认证过程: 1.用户使用username和pa ...

  8. jdk windows环境变量

    (1)新建->变量名"JAVA_HOME",变量值"C:\Java\jdk1.8.0_05"(即JDK的安装路径) (2)编辑->变量名" ...

  9. 关于x509、crt、cer、key、csr、pem、der、ssl、tls 、openssl等

    关于x509.crt.cer.key.csr.pem.der.ssl.tls .openssl等 TLS:传输层安全协议 Transport Layer Security的缩写 TLS是传输层安全协议 ...

  10. SpringBoot属性配置

    一:url的配置 1.配置 默认配置文件是application.properties 2.配置 配置端口 配置context path 3.启动效果 4.第二种配置方式 要先删除applicatio ...