`
liudaoru
  • 浏览: 1558905 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

网站整体优化其一:数据库优化同步的情况

    博客分类:
  • java
阅读更多

From:http://www.zzsjk.cn/html/wzyy/sstg/200909/30-25614.html

 

目前web2.0的程序,很大瓶颈是的吞度量。不过,如何才能确定系统的瓶颈是呢,因为只有确定是整个系统的瓶颈,我们才有必要去优化他,毕竟,还有这么多需求等待我们去做。

  如何确定是瓶颈?

  1 如果程序设计良好,有一个操作逻辑层,可以从这个层的统计数据看到每个请求花费的时间,如果平均时间已经不能让你容忍的话,已经是瓶颈了。

  2 在的服务器上使用top命令,看看mysql服务器占用资源的情况,看看机子的平均负载。

  如果服务器的平均负载已经很高,mysql占用了块100%的cpu资源,说明mysql服务器很忙了。

  3 在服务器上使用iostat命令,看看磁盘IO,如果block住的操作比较多的话,说明操作还是过于频繁了,磁盘都响应不急了。

  4 建议打开mysql的慢查询日志,这样grep select看一下日志中的慢查询的数量,如果数量较多,说明慢查询的数量很多,需要进行调整了。

  5 如果有一天无法插入了,需要检查一下表是不是过大了。32位的操作系统上一个表最大的容量是2^32这么大。不过还是建议增加一个操作的逻辑层,在操作的前后记录下操作的时间,进行统计上报,利用监控程序来报警相关负责人,这样可以及早的知道是瓶颈,提前做出优化。

  知道是瓶颈了,如何来进行优化呢?

  1 我们第一个想到是看看的容量是不是太大了,如果表太大的话,索引文件也会比较大,每次的更新操作就会更加的费时。需要考虑进行分库和分表了。

  分库分表按照一定的规则来对中的记录进行分区来存储,一方面可以做到一定的负载均衡,将请求平分下来,每个区段去独自承受;另一方面,分库分表可以使我们存储和操作更多的数据。

  不过分库分表需要多之前基于单库的程序进行修改,存在一定的风险,因此,在程序设计之初就应该考虑到分库分表的需要,最好是将操作层独立出来,便于扩展和更改。

  2 如果表不是很大,但是查询慢的话,我们需要检查一下我们的sql查询语句,利用mysql的explain语句看看是不是使用了索引,如果没有使用索引,那我们需要在相应的字段上建上索引,反复的使用explain,寻找到个一个合适的索引。

  在建索引时需要考虑:

  1)的索引要做到越少越好。

  因为每次更新都需要更新索引,索引过多就会降低写入的速度。

  2)最窄的字段放在键的左边。

  这样提高了索引中每一个点的基数,带来更好的索引读写性能。

  3)尽量避免file sort排序、临时表和表扫描。

  对于大表,全表扫描会导致大量的磁盘IO的操作,会导致操作非常的缓慢。

  4)对于大表,尽量不要将索引建在字符串类型的列上,字符串的匹配是很费时的,需要付出很高的性能代价,如果一定有必要,建议对字符串列进行hash后取一个整形的值来进行索引。

  3 如果更新操作有点慢,而读操作的响应要求不需要很及时的话,可以考虑利用mysql的主从热备来分担读写的压力。

  毕竟对的操作,写少读多。因此,我们将对的写操作放到mysql的主服务器上,利用mysql的热备,我们在备份的服务器上进行读操作,由于可以有多个热备mysql,于是可以将读操作分布在多个热备上面,从而将读操作均衡开来,提高读操作的性能。

  4 缓存的使用

  缓存是一切后台程序的根本,因为80%的请求是对应20%的数据,我们只需要少量的内存将20%的数据缓存起来,就可以大大的满足我们系统需求,何乐而不为呢。

  1)mysql设置中尽量增加key cache,thread cache、查询的cache。

  2)在应用程序层增加一个memcached这样的通用cache。

  3)对于少量数据,但是操作频繁的表使用mysql提供的内存heap表,可以获得极高的写入和读取速度。

  5 的设计上进行优化

  对于传统的设计我们讲究建模范式,避免数据的冗余从而导致脏数据。然而在我们实际的应用中需要根据情况来使用第三范式的一些规则,对于一些频繁需要在多个地方出现的数据,如同一个论坛这种用户和主题以及回复等有关联的应用中,如果我们将用户同主题和回复分开来存储,每次查询一下一篇文章或者一个回复的情况都需要对用户表和主题表或者回复表进行联查,如果数据量小的话,这样联查的性能还是可以接受的,如果表大一点,上了3、4十万以上的数据,联查的速度就会比较慢了。

  该范式化的地方需要进行范式化,但是还是需要根据情况来设计我们的表,从而达到性能和良好设计的折中。

  其它的话:

  1 对于的操作建议分层处理,至少分为两层,一层是操作的逻辑层,一层是的cache层。

  从一开始就考虑如此,可以很方便在未来对进行划分部署、分库分表扩展。

  2 增加mysql的监控,监控mysql的慢查询日志,监控mysql的请求情况。

  3 根据自己的需要来选择mysql的存储。

  myisam有较高的读写速度,但是由于表锁定,不能同时进行快速的读和写。

  innodb支持事务,提供了行级的锁,但是为了使用事务,表空间会比较大,而且不支持全文索引。

  heap将表放到内存中,适合与表小而需要频繁操作的情况,如用户信息,其读写很快,但是不是持久的,需要自己来写工具让其持久。

  4 mysql服务器的一些状态检测的命令。

  show slave status:可以看到主从同步的情况。

  show [full] processlist:可以看到mysql服务器的请求情况,如果发现lock情况很多,需要注意了。

  show status:可以看到mysql服务器的各种请求情况。

分享到:
评论

相关推荐

    构建最高可用Oracle数据库系统 Oracle 11gR2 RAC管理、维护与性能优化

    13.5数据库特殊情况的恢复 13.5.1联机Redo日志损坏与恢复 13.5.2数据文件脱机与恢复 13.5.3表空间脱机与恢复 13.6本章小结 第14章 RAC安全性 14.1数据访问安全性 14.1.1 Oracle安全性解决方案 14.1.2 VPD和...

    分布式数据库系统复习材料.doc

    数据库管理员分为 局部DBA和全局DBA 15、分布式数据库有两部分组成:一部分是关于应用所需要的数据的集合,称为应用数 据库,它是分布式数据库的主体;另一部分是关于数据库中数据结构的定义,以及全局 数据的分片、...

    fastdb源码 (一个高效率的内存数据库系统)

    概述FastDB是一个高效率的内存数据库系统,具有实时性能和方便的C++接口。 FastDB并不支持客户端/服务器结构,所有使用FastDB数据库的应用程序都必须运行在同一台主机上。FastDB为具有主导读取访问模式的应用程序作...

    kuku265网址导航 v1.0.rar

    kuku265网址导航系统更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! kuku265网址导航系统安装帮肋 1.修改siteconfig/conn.asp的...

    kuku265网址导航 v2.0

    kuku265网址导航 v2.0更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理、网址提交、网站留言、网址反馈等栏目。 kuku265网址导航...

    企业SEO优化站 17.6

    41.修正手机端网站不能同步生成问题;42.栏目类别新增功能上下移动,产品和新闻新增功能置顶、前移、后移、底部功能;更加人性化操作排序;43.最新升级:自动推送为提高站点新增网页发现速度推出的工具,安装自动推...

    企业SEO站 v17.1 无组件生成HTML.rar

    企业网站SEO优化:强大的SEO网站优化功能,快速让您的网站在搜索引擎中脱颖而出,让更多的客户找到您。 企业SEO站 v17.1 无组件生成HTML 企业SEO网站安装: 1、上传至虚拟主机[根目录]。 2、若上传至虚拟主机根...

    新酷CMS网站管理系统 10.018.78.rar

    系统基于ASP语言ACCESS/SQL数据库开发,无论在稳定性、代码优化、运行效率、负载能力、安全等级、功能可操控性和权限严密性等方面都居国内外同类产品领先地位。 新酷CMS产品特性: 良好的用户口碑 丰富的开源...

    好251网址大全源码 v3.2 高仿好123网址导航ASP版.rar

    更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! 增加了数据库安全性。数据库默认的地址:/admin/hao251.asa 如果不是在根目录 ...

    PHP云人才系统(phpyun)

    微信跨端支付优化:套餐部分同化选项合并优化:企业信息完善优化:相关提示引导优化:支付流程、提示优化:简历下载word优化:座机填写格式优化:系统消息脱敏处理优化:界面UI、部分业务逻辑整体优化修复:...

    china128网址大全 v2.0.rar

    更新同步了最新的数据,增加了广告连接的管理,更新修改了首页变形不兼容WIN7,美化了首页代码的整体优化。增加了广告JS代码管理! 增加了数据库安全性。数据库默认的地址:/admin/admin.asa 如果不是在根目录 ...

    商城(thinkphp5)

    19. 优化 后台新界面整体结构 20. 优化 满就送全部商品也支持送赠品功能 21. 优化 商品添加与编辑中商品类型对规格的关系. 22. 优化 商品添加与编辑是规格的显示与编辑 23. 新增 商品单位用于前台页面显示 24. 新增 ...

    企业SEO站 v17.2 无组件生成HTML.rar

    企业网站SEO优化:强大的SEO网站优化功能,快速让您的网站在搜索引擎中脱颖而出,让更多的客户找到您。 企业SEO站 v17.1 无组件生成HTML 企业SEO网站安装 1、上传至虚拟主机[根目录]。 2、若上传至虚拟主机根...

    企业SEO站 v17.0 无组件生成HTML.rar

    企业网站SEO优化:强大的SEO网站优化功能,快速让您的网站在搜索引擎中脱颖而出,让更多的客户找到您。 企业SEO站 v17.0 无组件生成HTML 企业SEO网站安装: 1、上传至虚拟主机[根目录]。 2、若上传至虚拟主机根...

    ssm项目开放实验室预约管理系统pf.zip

    4. **实时日历同步**:预约情况可以在日历中实时展示,方便用户和管理员查看和管理。 5. **自动提醒通知**:通过微信模板消息功能,向用户发送预约成功、即将到期等提醒。 6. **设备维护记录**:管理员可以记录设备...

    新酷数据源码完整版Newcool v9.001.45版

    新酷数据网站管理系统免费完整版Newcool v9.001.45版 一、基本说明: 本程序适用于中小型ASP网站的快速建设; 结构:ASP+ACESS+FSO。 二、功能说明: 主要栏目设置: 新闻系统(二级分类) 公告系统 投票系统...

    网新中英文企业手机电脑一体化建站标准版 v4.9.rar

    13、多项为系统优化而设置的功能接口,如站内链接(站内链接的合理建造是搜索引擎优化的重要技术之一,它的优化能使网站整体获得搜索引擎的价值认可, 这个优化措施主要是建立方便、直接、全面的浏览导航链接,使每一...

    网新中英文企业手机电脑一体化建站视频版 v5.8.rar

    13、多项为系统优化而设置的功能接口,如站内链接(站内链接的合理建造是搜索引擎优化的重要技术之一,它的优化能使网站整体获得搜索引擎的价值认可, 这个优化措施主要是建立方便、直接、全面的浏览导航链接,使每一...

    最新Java面试题视频网盘,Java面试题84集、java面试专属及面试必问课程

    │ Java面试题67:数据库优化之数据库表设计遵循范式.mp4 │ Java面试题68:选择合适的数据库引擎.mp4 │ Java面试题69:选择合适的索引.mp4 │ Java面试题70:使用索引的一些技巧.mp4 │ Java面试题71:数据库优化...

    网新中英多国语言CMS v9.0.rar

    13、多项为系统优化而设置的功能接口,如站内链接(站内链接的合理建造是搜索引擎优化的重要技术之一,它的优化能使网站整体获得搜索引擎的价值认可, 这个优化措施主要是建立方便、直接、全面的浏览导航链接,使每...

Global site tag (gtag.js) - Google Analytics