网站、数据库的衍变之路(三)

news/2024/5/10 14:20:08/文章来源:https://blog.csdn.net/weixin_33696822/article/details/85431812

话接前文《网站、数据库的衍变之路(二)》。上文讲了几种静态化方案的利弊,有朋友要讲详细一点,呵呵,这不属于本文的范畴。也有朋友说有些网站不适合搞静态化,是有这种情况。但是在这个时期,网站还处于刚发展的起始阶段。初期的网站用户量往往很小,都是以提供咨询为主,典型的web1.0系统,静态化方案是和这个背景紧密相关的。而随着网站的逐步发展又会遇到些什么样的问题呢?这个要看网站发展的实际情况。大体上分为两类:一、就是做资讯的,用户一般是从搜索引擎过来的,没有多少的交互任务;二、以做SNS或者论坛这类互动性高的产品的(用论坛提供下载或者文字阅读的不在此例)。

一、提供内容为主的系统

对于第一种提供内容的网站而言,会出现两种情况。一种是数据容量过大,由于早期设计失误,造成数据库访问速度很慢;第二种是访问人数过多,造成IIS响应不过来,反映在访问速度慢或者干脆报Service Unavailable错误。或者两种情况都发生了。

对于数据访问慢的情况,需要对数据库进行优化。包括优化查询语句,优化数据库结构,索引优化。而对于单表数据好几千万条的优化则需要进行分表。在SQL2005以前版本中并没有,没有使用内置的表分区功能,需要自己实现。策略一般是按照时间,把数据放到不同的表中。然后再使用视图功能把表查询聚合到一起。这种方式和SQL2005带的表分区相比有很大不同,效率远比SQL2005带的要低。为什么呢?比如SQL2000,建立两张相同结构的表,储存数据。表一和表二都是500万数据。查询时,先从表1筛选到数据,再从表二筛选到数据,然后合并,再按条件排序,还是单线程的,这能不慢吗?而SQL2005是可以把索引放到不同的分区,多线程地去操作,由于是在进程内完成数据的筛选排序,速度还是很快。当然,前提是服务器有很多个核。(SQL2005表分区只在服务器版中可以使用。)

对于IIS响应慢或者Service Unavailable的情况,有可能是带宽太小,也可能是连接数太多了。我记得有人做过测试,IIS的TCP连接数最大大概是8000的样子,Unix下的Apache(还是httpd忘记了。)最大连接数一万多。好像说是操作系统TCP/IP堆栈的限制,我对这方面不太懂。如果超过这个量或者是其它类似的原因造成了web服务不稳定,那么就该加服务器了。

二、互动性高的系统

互动性高的系统容易遇到的问题是数据库高并发。数据库的很多操作是有锁的,锁保存在系统表里,如果系统的吞吐量也满足不了需要,那么锁就会出现问题了。你可以认为,数据库一次至多只能有100个连接(在SQL2005服务器版本上测试)。如果超出了,那么,第101个就会超时。假如有一条语句操作时间很长,也操作频繁,那么应该很容易就引起数据库超时的错误。

这种系统,如果数据库本身已经满足不了了,可以用拦截器来解决。用拦截器也需要考虑怎么设计方案。假设现在每秒钟有100条数据库操作命令,而这100条命令各不相同,并且数据库1秒钟刚好能处理这100条命令。那现在每秒钟有101条命令,并且命令还是各不相同,每秒中与每秒钟产生的命令也是不相同的,那么做拦截器也是毫无用处的。最多只能有一个缓解作用。因为每秒钟都会增加一条无法处理的命令。

2009080418543847.jpg

图2.1

幸运的是,在处理的语句中有很多是重复的。比如,现在拦截器如图2.1一样工作,在1秒钟内,拦截了101条命令,归并出有20条语句都是查询的同样的内容(一般是列表页),最后整理出实际需要操作40条命令,然后执行命令,拿到数据库后分发给这101个请求。也就是说101个工作被压缩成了40个工作。

还可以对某些不常变动的数据进行缓存。比如文章的分类,用户的名字(这个要看注册用户增长的情况)。图2.1的模型改成图2.2的情况。

2009080419013867.jpg
图2.2

当然缓存块也可以加在Web应用的部分。主要用来保存一段时间内不更新的数据,当然,这个缓存是有过期策略的。

对于SQL查询的优化,缓存也能帮到一定的忙。比如,有个联合查询,查询的是文章分类表和文章表。完全可以只查文章表,而文章表中只有分类ID,显示的时候怎么办?在内存中,缓存了一个分类字典,键就是分类ID,值就是分类名称。显示的时候,直接用文章内分类ID在字典中找。这样就提高了SQL语句的效率。

而出现大表的情况,还是参考本文的第一部分解决。

现在,本文还有一个问题没解决呢,那是第一部分遗留的。要增加服务器,那怎么部署呢?

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

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

相关文章

Java SpringMVC 支付宝-手机网站支付接口

首先就是申请支付宝第三方接口,获取到APPID,应用发布前也可以用支付宝的沙箱环境,服务器要开启外网访问权限,因为支付宝需要返回异步通知(notify_url)和同步通知(return_url) 如果想学习Java工程化、高性能…

JAVA WEB快速编写一个JSP WEB网站了解网站的基本结构 调试 部署

一、使用eclipse初始化一个JSP WEB项目(即:动态WEB项目),步骤如下: 如上图示注意选择TOMCAT版本 如上图示勾选生成web.xml,当然如果不勾选也行,但后续如果有需要用到配置的地方就需要再单独添加,故这里我选…

我穿越到1994年,终于发现80%的网站都用PHP的原因!

见字如面,我是军哥!昨天晚上写代码到深夜,一头扎到床上,沉沉睡去。第二天睁开眼睛,我发现自己居然坐在一个咖啡馆里,旁边的墙上贴着最新的英文电影海报《阿甘正传》、《肖申克的救赎》这都是1994年的经典电…

Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解(3)

欢迎关注专栏:Java架构技术进阶。里面有大量batj面试题集锦,还有各种技术分享,如有好文章也欢迎投稿哦。 上一篇:Java程序员进阶笔记实操—大型网站架构技术之负载均衡详解(2) 本次分享大纲 软件负载均衡概…

使用SEP实现:禁止访问特定的网站

利用SEP自带的防火墙可以禁止客户所需要禁止的网站。具体操作如下: 1、点击【Policies】选【Firewall】,在右边右击,选择【Add】。 2、选择【Rules】,可以再【Policy name】里更改名字,便于识别。 3、选择【Add Rule】…

允许网站使用相机和麦克风_新一代网红神器 佳能G7 X Mark III相机评测

1英寸卡片机向来是很多玩家首选的随身摄影器材。一方面,1英寸传感器相较手机等常规装备而言具备更高的成像水准;另一方面,“小巧机身大光圈变焦镜头”的配置不仅带来了出色的便携性,同时还能满足各种复杂的拍摄需求,实…

怎么arm数据上传到云服务器_纵横数据:在日本服务器上搭建外贸网站怎么样?...

​​现在外贸建站赚取外汇已经成为不少企业的收入来源,而对于外贸网站的搭建,不少企业或者网站开发者都会选择使用wordpress程序,而且近几年采用wordpress搭建外贸用户的增长一直都比较快。那么使用wordpress搭建外贸网站有什么好处&#xff…

Magento网站迁移指南

上周五,为MKT同事迁移了一个从本机到GODADDY的MAGENTO系统。 中间出了不少状况, 现在写个迁移纲要: ~~~~~~~~~~~~~~~~ 1,网页和数据库文件上传,最好采用压缩方式,节约网络流量和布置时间。 2,如…

网站php.ini在哪,php.ini在哪

最近在centos中安装lamp环境,发现装完php之后,没有php.ini文件,那么php.ini在哪呢?正常情况下php.ini文件是在php的安装目录下的lib目录里,比如我的php安装目录在/usr/local/php/中,而我进到/usr/local/php/lib目录中却…

总用这个网站把ppt,doc转成PDF,还挺好用,记一下

2019独角兽企业重金招聘Python工程师标准>>> http://www.freepdfconvert.com/ 转载于:https://my.oschina.net/ahuaahua/blog/132714

10个帮程序员和站长减压放松的良心网站!

2019独角兽企业重金招聘Python工程师标准>>> 1. Calm 这是同类型中最火的网站了,站如其名,「平和」,通过自然的图像(阳光下的暖流、淙淙的小溪等)与缓缓的音乐,帮你在短时间内放松下来。 左侧有…

php网站栏目隐藏,phpcms 首页需要隐藏栏目的代码

找到首页模板搜索{php $num}在其后面增加代码即可{php if($r[ismenu]!1) continue;}完成代码如下{loop subcat(0,0,0,$siteid) $r}{php $num}{php if($r[ismenu]!1) continue;}{$r[catname]}更多>>{pc:content action"lists" catid"$r[catid]" order…

ie连接服务器被系统禁止,防止IE被流氓网站乱改

随着互联网的普及和网民队伍的壮大,网络也变的越来不安全。病毒、木马日益侵蚀着我们的网络,让我们感到网络上到处都存在着危险。尽管FireFox、Maxthon等的浏览器以其独特的功能和安全性被越来越多的用户接受,但是IE仍然是浏览器中的“老大”…

JSP网站开发基础总结《一》

经过JAVASE的学习相信大家对JAVA已经不再陌生,那么JAVA都可以干什么呢?做算法、应用程序、网站开发都可以,从今天开始为大家奉上JAVAEE之JSP动态网站开发基础总结。 既然是动态网站开发,那它与传统的静态网站有什么区别呢&#xf…

css3媒体查询实现网站响应式布局

响应式建筑设计、响应式家具设计、响应式办公设计,这些词可能是已有的专业名词,也可能是我自己想出来的一些名词。因为在生活中,我们常常会见到很多让人惊叹的设计,为什么同一套东西经过不同的方式变化之后会给人不同的使用感受和…

ubuntu下webbench作网站压力测试教程【webbench安装】

webbench最多可以模拟3万个并发连接去测试网站的负载能力,个人感觉要比Apache自带的ab压力测试工具好,安装使用也特别方便。 1. 安装教程 1.1 安装依赖 exuberant-ctags sudo apt-get install exuberant-ctags1.2 下载源码并安装 wget http://blog.s…

考试网站暂时关闭_高权重网站站长之家,站长专栏申请暂时关闭了!

站长之家,站长专栏申请暂时关闭了,做SEO的朋友应该知道站长之家是可以免费投稿的,且发布内容是可以带外链。不论是从SEO角度发布外链,还是软文推广方面来看,站长之家确实是非常不错的一个外链推广平台,近日…

php视频网毕业论文范文,毕业设计论文-基于PHP的精品课程网站的设计与实现.doc...

毕业设计论文-基于PHP的精品课程网站的设计与实现.doc还剩41页未读,继续阅读下载文档到电脑,马上远离加班熬夜!亲,很抱歉,此页已超出免费预览范围啦!如果喜欢就下载吧,价低环保!内容…

网站重定向次数过多怎么解决_网站关键词排名怎么查询,网站排名差怎么解决?...

网站关键词的的排名可以为企业带来流量和客户,网站运营人员也为提升网站排名为工作的目标。那么在做网站排名的时候网站关键词排名是怎么查询的呢?网站排名差怎么解决?  一、查询网站排名的方法:1、手动查询我们可以在百度上搜索我们想要查…

我的第一个响应式网站zz

一些废话(马克思主义乖巧) 上班快四个月了,码了一堆无聊的页面,终于,来了一次好玩点的,要我做个响应式网站。正好之前有在看Bootstrap。只是光学习不练的话效率比较慢(有跟着写demo)…