apache
Apache是世界使用排名第一的Web服务器软件。它可以运行在几乎所有广泛使用的计算机平台上。
Apache源于NCSA>
本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。Apache有多种产品,可以支持SSL技术,支持多个虚拟主机。Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此,在一个ApacheWeb站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,市场占有率达60%左右。世界上很多著名的网站如Amazon、Yahoo!、W3Consortium、FinancialTimes等都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、Windows、Linux系统平台上)以及它的可移植性等方面。
Apache的诞生极富有戏剧性。当NCSA>
Apacheweb服务器软件拥有以下特性:
支持最新的>
拥有简单而强有力的基于文件的配置过程
支持通用网关接口
支持基于IP和基于域名的虚拟主机
支持多种方式的>
集成Perl处理模块
集成代理服务器模块
支持实时监视服务器状态和定制服务器日志
支持服务器端包含指令(SSI)
支持安全Socket层(SSL)
提供用户会话过程的跟踪
支持FastCGI
通过第三方模块可以支持JavaServlets
如果你准备选择Web服务器,毫无疑问Apache是你的最佳选择。
Apache有名的几个项目介绍
>
这个在前面的段落介绍过了,Apache已经是他的代号了
ActiveMQ
免费开源由java编写符合JMS11标准的消息中间件。
另外,它也支持通过除java语言外的语言的使用
Ant
这个太出名了。标准的批处理工具。是一套基于java的程序打造工具
Commons
一些常用的工具类库,包括common-pool,dbcp,fileupload,Common-beans等。
Excalibur
它的主要产品是一个由java写成的,名字叫做Fortress(要塞)的轻量级的可嵌入式反向控制容器。
iBATIS
并入的一个项目,是ORM的一个很流行的工具
Geronimo
是Apache软件基金会为了创造一个兼容j2ee的容器,而整理出来的一个新成果
Jakarta
许多Java子项目的集成,tomcat,ant等就是从这里孵化出去的。
James
是一套用java开发的邮件、新闻组、消息服务器。它使用的avalon组件框架。目前支持SMTP,POP3和NNTP很快也会支持IMAP
Logging
基于java的可靠,快速,扩展性强的日志工具
Maven
是一套java开发的工程综合管理工具。它基于工程对象模型(POM)的理念
Portals
门户产品
Struts
一套通过servlets和jsp来搭建web应用的MVC框架
Tomcat
用量最大的免费的Java服务器
是一个小游戏服务器 地址是:playmcndsjcom 里面的UHC-极限生存就是大逃杀如果有帮到您的话
不妨点击一下采纳
这样我才有更多的动力哦~"高"是指该服务器的在线人数已经接近或者达到服务器的承受能力,就是所谓的满人,如果挤进去或许要排队
"中"是指该服务器的人数在服务器的承受能力的中间水平
"低"说明这个是乡下服,荒无人烟
"锁"是该服务器已经注册的玩家人数大大超过服务器的负荷,如果想转服的话只能转出不能转进这个一般是高负荷的服器,大多时候需要排队
第一步:应用程序把查询SQL语句发给服务器端执行
我们在数据层执行SQL语句时,应用程序会连接到相应的数据库服务器,把SQL语句发送给服务器处理。
第二步:服务器解析请求的SQL语句
SQL计划缓存,经常用查询分析器的朋友大概都知道这样一个事实,往往一个查询语句在第一次运行的时候需要执行特别长的时间,但是如果你马上或者在一定时间内运行同样的语句,会在很短的时间内返回查询结果。原因是:
服务器在接收到查询请求后,并不会马上去数据库查询,而是在数据库中的计划缓存中找是否有相对应的执行计划。如果存在,就直接调用已经编译好的执行计划,节省了执行计划的编译时间。
如果所查询的行已经存在于数据缓冲存储区中,就不用查询物理文件了,而是从缓存中取数据,这样从内存中取数据就会比从硬盘上读取数据快很多,提高了查询效率。数据缓冲存储区会在后面提到。
如果在SQL计划缓存中没有对应的执行计划,服务器首先会对用户请求的SQL语句进行语法效验,如果有语法错误,服务器会结束查询 *** 作,并用返回相应的错误信息给调用它的应用程序。
注意:此时返回的错误信息中,只会包含基本的语法错误信息,例如select写成selec等,错误信息中如果包含一列表中本没有的列,此时服务器是不会检查出来的,因为只是语法验证,语义是否正确放在下一步进行。
语法符合后,就开始验证它的语义是否正确。例如,表名、列名、存储过程等等数据库对象是否真正存在,如果发现有不存在的,就会报错给应用程序,同时结束查询。
接下来就是获得对象的解析锁,我们在查询一个表时,首先服务器会对这个对象加锁,这是为了保证数据的统一性,如果不加锁,此时有数据插入,但因为没有加锁的原因,查询已经将这条记录读入,而有的插入会因为事务的失败会回滚,就会形成脏读的现象。
接下来就是对数据库用户权限的验证。SQL语句语法,语义都正确,此时并不一定能够得到查询结果,如果数据库用户没有相应的访问权限,服务器会报出权限不足的错误给应用程序,在稍大的项目中,往往一个项目里面会包含好几个数据库连接串,这些数据库用户具有不同的权限,有的是只读权限,有的是只写权限,有的是可读可写,根据不同的 *** 作选取不同的用户来执行。稍微不注意,无论你的SQL语句写的多么完善,完美无缺都没用。
解析的最后一步,就是确定最终的执行计划。当语法、语义、权限都验证后,服务器并不会马上给你返回结果,而是会针对你的SQL进行优化,选择不同的查询算法以最高效的形式返回给应用程序。例如在做表联合查询时,服务器会根据开销成本来最终决定采用hashjoin,mergejoin,还是loopjoin,采用哪一个索引会更高效等等。不过它的自动化优化是有限的,要想写出高效的查询SQL还是要优化自己的SQL查询语句。
当确定好执行计划后,就会把这个执行计划保存到SQL计划缓存中,下次在有相同的执行请求时,就直接从计划缓存中取,避免重新编译执行计划。
第三步:语句执行
服务器对SQL语句解析完成后,服务器才会知道这条语句到底表态了什么意思,接下来才会真正的执行SQL语句。
此时分两种情况:
如果查询语句所包含的数据行已经读取到数据缓冲存储区的话,服务器会直接从数据缓冲存储区中读取数据返回给应用程序,避免了从物理文件中读取,提高查询速度。
如果数据行没有在数据缓冲存储区中,则会从物理文件中读取记录返回给应用程序,同时把数据行写入数据缓冲存储区中,供下次使用。
说明:SQL缓存分好几种,这里有兴趣的朋友可以去搜索一下。有时因为缓存的存在,使得我们很难马上看出优化的结果,因为第二次执行因为有缓存的存在,会特别快速,所以一般都是先消除缓存,然后比较优化前后的性能表现,这里有几个常用的方法:
1DBCC
2从缓冲池中删除所有清除缓冲区。
3DBCC
4从过程缓存中删除所有元素。
5DBCC
6从所有缓存中释放所有未使用的缓存条目。
SQLServer2005数据库引擎会事先在后台清理未使用的缓存条目,以使内存可用于当前条目。但是,可以使用此命令从所有缓存中手动删除未使用的条目。
这只能基本消除SQL缓存的影响,目前好像没有完全消除缓存的方案,如果大家有,请指教。
执行顺序:
FROM子句返回初始结果集。
WHERE子句排除不满足搜索条件的行。
GROUPBY子句将选定的行收集到GROUPBY子句中各个唯一值的组中。
选择列表中指定的聚合函数可以计算各组的汇总值。
此外,HAVING子句排除不满足搜索条件的行。
计算所有的表达式;
使用orderby对结果集进行排序。
查找你要搜索的字段。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)