优化网站性能之数据库架构篇

news/2024/5/17 12:42:07/文章来源:https://blog.csdn.net/weixin_30367543/article/details/95372444

很多小型网站的开发人员一开始将注意力放在产品需求设计上,这本无可厚非。但如果忽视整体性能、可扩展性等方面的考虑,眼看着访问量一天天往上爬,可突然发现有一天网站因为访问量过大而崩溃了,到时候哭都来不及。

我在后端设计中曾经提到,对于高并发高访问的Web应用来说,数据库存取瓶颈一直是个令人头疼的问题。特别当你的程序架构还是建立在单数据库模式,而一个数据池连接数峰值已经达到500的时候,那你的程序运行离崩溃的边缘也不远了。在Web网站的规模从小到大不断扩展的过程中,数据库的架构也需要动态扩展,每一次扩展性能上都可以得到数量级的提升。

 

1. Web应用和数据库部署在同一台服务器上

Web应用和Database在同一台服务器

Web应用和Database在同一台服务器

在用户量、数据量、并发访问量都比较小的情况下可以采取这种模式。不过随着访问量增加,应用程序和数据库都抢用有限的系统资源,很快会遇到性能问题。

2. Web应用和数据库部署在各自独立的服务器上

WEB应用和数据库部署在各自独立的服务器上

WEB应用和数据库部署在各自独立的服务器上

服务分离,Web应用和数据库分开部署,服务器各司其职,在访问量增加时可以根据情况分别升级应用服务器和数据库服务器。这是一般小规模网站的典型部署方式,在将应用程序进行性能优化并且使用数据库对象缓存策略的情况下,可以承载较大的访问量,比如2000用户,200个并发,百万级别的数据量。

3. 数据库服务器采用集群方式部署

一个数据库多个实例

一个数据库多个实例

比如Oracle的一个数据库多个实例的情况。数据库物理介质为一个磁盘阵列,多个数据库实例以虚拟IP方式向外部应用服务器提供数据库连接服务。这种部署方式基本上可以满足绝大多数的Web应用需求。

4. 数据库的主从复制模式

数据库的主从复制

数据库的主从复制

在数据库访问中存在众多的查询操作,在多数情况下一个显著特点就是读操作远大于写操作,而且查询条件相对复杂,数据库的大部分性能实际消耗在查询上。假如能将数据库的读写操作分离,对于系统性能来讲会有一个很大的提高空间。

几乎所有的主流数据库都支持复制,以Mysql为例,只需要开启主服务器上的二进制日志以及在主服务器和从服务器上分别进行简单的配置和授权。主从复制是依据主服务器的日志文件进行的,主服务器日志中记录的操作会定时在从服务器上重放,从而实现复制,所以主服务器必须记录所有对于主数据库的更新操作。主从复制用于自动备份,但在这里我们的目的是读写分离。为保证数据的一致性,我们要求所有对于数据库的更新操作都是针对主数据库的,但是读操作可以针对从数据库来进行。

主从复制数据是异步完成的,这就导致主从数据库中的数据有一定的延迟,在读写分离的设计中必须要考虑这一点。以博客为例,博主发表了一篇文章,他需要马上看到自己的文章,但是对于其它读者来讲是可以允许延迟一段时间的。所以其他访问量更大的外部用户就可以读从数据库。

5. 数据库垂直分割

主从部署方式适用于读操作比写操作更加密集的前提,如果写操作占了主数据库CPU消耗的50%以上,我们再增加从服务器就没有意义了,因为所有的从服务器的写操作也将占到CPU消耗的50%以上,从服务器所能为查询操作提供的资源非常有限。数据库需要重新架构,我们需要采用数据库垂直分区技术。

最简单的垂直分区方式是将原来的数据库中独立的业务进行分拆,被分拆出来的部分与其它部分不需要进行Join连接查询操作。比如Web站点的Blog和论坛,是相对独立的,他们之间数据的关联性不是很强,这时可以将原来的的数据库拆分为一个Blog库,一个论坛库,以及剩余的表所组成的库。这三个库再各自进行主从数据库方式部署,这样整个数据库的压力就分担啦。

查询扩展性也是采用数据库分区最主要的原因之一,将一个大的数据库分成多个小的数据库可以提高查询的性能。事实上,当前十分火热的NOSQL技术就是采用空间换时间,使用key-value型的存储结构,即使有很多数据冗余,但由于避免了Join操作从而提升了性能,NOSQL在高并发高负载的网站广泛应用。

6. 数据库水平分割

在数据库的垂直分区之后,如果仍无法应对大量的写操作,这时我们需要的是水平分区。

水平分区意味着我们将同一个数据库表中的记录通过特定的算法进行分离,分别保存在不同的数据库表中,从而可以部署在不同的数据库服务器上。很多的大规模的站点基本上都是主从复制+垂直分区+水平分区这样的架构。水平分区并不依赖什么特定的技术,完全是逻辑层面的规划。对于那些频繁访问导致站点接近崩溃的热点数据,我们必须分区。

在对数据水平分区的时候,我们要找一个索引字段,比如USER_ID,它必须和所有的记录都存在关系,是分区数据库中的核心表的主键,在其它表中作为外键,并且在使用主键的时候,该主键不能是自增长的,必须是业务主键才可以。具体的分区方式有:

  • 余数分区:将User_ID%10后的值为依据存入到不同的分区数据库中,该算法简单高效,但是在分区数据库个数有变动的时候,整个系统的数据需要重新分布。
  • 范围分区:将User_ID的范围进行分区,比如1-100000范围为一个分区数据库,100001-200000范围为一个分区数据库,该算法在分区数据库个数有变动的时候,系统非常有利于扩展,但容易导致不同分区之间的压力不同,例如老用户所在的分区数据库的压力很大,但是新用户的分区数据库的压力偏小。
  • 映射关系分区:将对分区索引字段的每个可能的结果创建一个分区映射关系,这个映射关系非常庞大,需要将它们写入数据库中。比如当应用程序需要知道User_id为10的用户的BLOG内容在那个分区时,它必须查询数据库获取答案,当然,我们可以使用缓存来提高性能。这种方式详细保存了每一个记录的分区对应关系,所以各个分区有非常强的可伸缩性,可以灵活的控制,并且将数据库从一个分区迁移到另一个分区也很简单,也可以使各个分区通过灵活的动态调节来保持压力的分布平衡。

参考链接:http://blog.csdn.net/zhangzhaokun/archive/2009/10/22/4711693.aspx

 

http://www.lovelucy.info/website-database-optimization.html?variant=zh-hans

转载于:https://www.cnblogs.com/chen110xi/p/4301941.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_774791.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【创建网站(一)】Amazon AWS基本搭建

【创建网站(一)】Amazon AWS基本搭建 作为一个程序员,总觉的没个自己的网站都不好意思和人打招呼^ _ ^,所以这次坚决要建个自己的网站。 VPS用的是亚马逊的AWS,可以免费的使用一年。 以下是详细的步骤: 一、注册AWS账号 浏览器…

【创建网站(二)】EC2弹性IP申请和绑定

【创建网站(二)】EC2弹性IP申请和绑定 上一篇中,我们完成了Amazon AWS的申请与基本搭建。 传送门:【创建网站(一)】Amazon AWS基本搭建 这篇,我们将完成EC2弹性IP的分配与绑定。 为什么要使用弹性IP 服务器的公网IP地址默认是动态分配的&a…

html5移动web开发黑马掌上商城_html5自适应网站的基本含义

地球是巨大的,不同地区的距离是遥远的。但是在今天,通过人类的先进技术水平,这些问题都已经不是问题。互联网的技术把地球变得更小,人们形象的称呼用互联网联系的地球为“地球村”。这就是互联网的神奇作用。而要很好的使用好互联…

bilibili在线解析接口_如何下载B站哔哩哔哩(bilibili)弹幕网站上的视频呢?小编来教你...

对于90后、00后来说,B站肯定听过吧。小编有一个苦恼的地方,有时候想把哔哩哔哩(bilibili)上看到的视频保存到手机相册,不知道咋操作啊。网上百度了下,都是要下载电脑软件的,有些还得要付费的。前不久,好姐妹…

小型的搜索引擎设计_郑州网站设计价格

安阳网站设计费用21世纪是信息化的时代,在信息时代生存的公司的基本规则就是要符合时代的要求。网站的建设对于现代企业而言,其重要性不言而喻,有时,网络经营的好坏直接关系企业的生存及发展。随着企业对网站的需求逐渐增加&#…

阿里云主机免费申请级网站配置

前阵子看到阿里云主机和邮箱免费申请,当然吸引到了我,倒弄了一番送上我的简单操作如下,域名绑定部分请见我前面的文章。 1.云主机和企业邮箱免费申请 申请网址:http://wanwang.aliyun.com/hosting/free/ 企业邮申请: 这个申请主要…

7 php 内存泄漏_wordpress零基础建站(5)-启用redis+优化php-fpm和mysql

在上一节教程中,我们已经搭建了wordpress环境phpnginxmysqlredis,并完成wordpress安装,目前你应该可以正常登录wordpress后台了。这篇文章是wordpress优化的第一篇文章,主要是软件配置方面的内容,后面我们还会再写一篇…

呕心之作:支付宝的手机网站支付接口的应用

由于去年做手机Portl接口的工作,需要使用支付宝的支付,于是手机网站支付接口就成了首选。 1.首先下载接口包 支付宝商家服务中心链接:https://b.alipay.com/login.htm?gotohttps://b.alipay.com:443/newIndex.htm 手机网站支付的产品介绍&am…

为什么cms大部分用php写,为什么使用phpcms建站

来谈谈为什么使用phpcms建站,现在是2021年,我仍然觉得很有必要做一下这个说明,一款老的建站cms系统,是否有必要仍然使用。首先,我们都知道,国内3大主流cms是帝国cms,织梦,还有就是ph…

wuc-tab标签点击不了_怎么提高网站点击率(已帮助2548人)

内容导读同样的流量,同样的更新,同样的外链,为什么有的网站点击率很高,有的网站点击率很低,点击率高的网站都有哪些特点,点击率高的网站文章质量一定就高吗,点击率低的网站文章质量一定就低吗&a…

centos7建站php_小白零基础建站详细教程

作为一个新手,想拥有一个自己独立网站、博客该如何操作,搭建网站呢?其实也很简单看完这篇文章你也就懂了!1.申请服务器具体过程我就不做重点描述了,大概步骤就是1.选择服务器厂商;2.选择服务器配置&#xf…

如何给页面加上loding_网站页面布局该如何优化?

网站的页面布局,是SEO优化工作中重要的板块之一,这当中包含了很多方面的细节问题。下面,柒点传媒就来教大家如何优化网站页面布局。图片源自网络1.图片还是文本一篇优质的文章往往会图文兼备,所以优化图片是一项不可或缺的工作。在…

网站能正常登陆但是点进去出现404错误_一群设计师用“404错误页面”逼死人啦...

- 小科普 -什么是404页面?404页面是客户端在浏览网页时,服务器无法正常提供信息,或是服务器无法回应,且不知道原因所返回的页面。说起“404错误”你眼前的画面是?随着这个白底黑字的页面出现,你不由自主地轻…

html的形式链接网站怎么样,网站内链的表现形式有哪些?

内部链接的首要目的就是提高网站的整体收录,提升链接目的页面的排名,对网站整体的流量能起到显著的优化。那网站内链的表现形式有哪些?1.网站导航网站导航是最常见的内部链接,也是比较重要的内链环节,用户或搜索引擎蜘蛛&#xf…

本地有一个现成的php网站但是数据库的账号密码啥的都和空间的不一样,本地web项目部署到服务器里连接不上数据库的解决办法...

今天突然想到把自己之前的项目挂到服务器上,但是用到了数据库,于是给服务器装上了MySQL,想着能赶紧把项目挂上去看看效果,然后并不是一帆风顺,在奋斗了四小时后终于解决了问题的所在。(1)首先我找到了自己的期中考试题…

[导入]新建了一个站点,关于网站色彩搭配的,请多关照

目前正在内部测试中,请大家支持和鼓励哈。浏览地址 : http://www.colorstreet.cn 谢谢。Gary Gong 2007-08-22 15:14 发表评论文章来源:http://www.cnblogs.com/edidu/archive/2007/08/22/865457.html转载于:https://www.cnblogs.com/wallis0922/articles/872248.…

恒联网络技术服务中心网站设计

恒联网络技术服务中心网站设计也就是我目前所在工作的公司,进行改版 转载于:https://www.cnblogs.com/javashi/archive/2010/01/21/1653646.html

51CTO专访人人网黄晶:SNS网站后台架构探秘

【51CTO独家专访】51CTO在此之前报道过一篇名为《世界最大的PHP站点 Facebook后台技术探秘》的文章,让我们了解到Facebook是如何保证5亿用户的系统一直保持稳定、可靠运行的。如果说Facebook离我们有些远的话,那么相信人人网是大家再熟悉不过的一个SNS网…

如何添加网站产品类别+网站产品的添加

1:登陆后台 点击产品管理 会列出当前所有的产品的类别, 我们添加一个新的产品类别 点击 添加列表 点击保存。 2:选中一个产品类别,添加此类别下的产品 点击保存后 返回列表即可看到刚才添加的产品。如果想在网站前台看到这个产…

2011年20大3D网站

如果要在互联网编年史上描述2011年的话,那么无需任何插件即可在浏览器中直接嵌入支持硬件加速的3D图形一定会被记上重重的一笔。 随着大部分现代浏览器都增加了对WebGL的支持(微软IE除外),以及最近发布的Flash 11,开发…