SQL,在这里我理解成SQLServer。三者是目前市场占有率最高(依安装量而非收入)的关系数据库,而且很有代表性。排行第四的DB2(属IBM公司),与Oracle的定位和架构非常相似,就不赘述了。
如果要说明三者的区别,首先就要从历史入手。
Oracle:中文译作甲骨文,这是一家传奇的公司,有一个传奇的大老板LarryEllision。Ellision32岁还一事无成,读了三个大学,没得到一个学位文凭,换了十几家公司,老婆也离他而去。开始创业时只有1200美元,却使得Oracle公司连续12年销售额每年翻一番。
Oracle成立于1977年,早期的理论基础,反而来自于一篇IBM的论文《ARelationalModelofDataforLargeSharedDataBanks》1。作者CODD选取了关系代数的五种运算,并基于运算,架构了一种新型的数据存储模型。基于这种模型,Oracle成为了一个非常典型的关系数据库。因此也变的严谨、安全、高速、稳定,并且变的越来越庞大。
由于其诞生早、结构严谨、高可用、高性能等特点,使其在传统数据库应用中大杀四方,金融、通信、能源、运输、零售、制造等各个行业的大型公司基本都是用了Oracle,早些年的时候,世界500强几乎100%都是Oracle的用户。
MySQL:MySQL的最初的核心思想,主要是开源、简便易用。其开发可追溯至1985年,而第一个内部发行版本诞生,已经是1995年。到1998年,MySQL已经可以支持10中 *** 作系统了,其中就包括win平台。但依然问题多多,如不支持事务 *** 作、子查询、外键、存储过程和视图等功能。下图是一个截止至2006年的数据库市场占有率2:
图中可以看出,MySQL的爆发实际是在01、02年,尤其是02年发布的40Beta版,正式选定InnoDB作为默认引擎,对事务处理能力及数据缓存能力有了极大的提高。同年41版开始支持子查询,至此MySQL终于蜕变成一个成熟的关系型数据库系统。05年的50版本又添加了存储过程、服务端游标、触发器、查询优化以及分布式事务功能,但同年被Oracle抄了后路,InnoDB被Oracle收编。08年,MySQL被Sun收购,09年,Oracle收购了Sun和MySQL。
SQLServer:一提到SQLServer,大家一般都只想到MicrosoftSQLServer,而非SybaseSQLServer。SQLServer最初是由Microsoft,SybaseandAshton-Tate三家公司拦下的生意,是为IBM(又出现了)公司的OS/2 *** 作系统开发的。随着OS/2项目的失败,大家也分道扬镳。Microsoft自然转向自己的win *** 作系统,作为windowsNT软件方案的一部分。而Sybase则专注于Linux/Unix方向的数据库开发。
MSSQLServer主要面向中小企业。其最大的优势就是在于集成了MS公司的各类产品及资源,提供了强大的可视化界面、高度集成的管理开发工具,在快速构建商业智能(BI)方面颇有建树。MSSQLServer是MS公司在软件集成方案中的重要一环,也为WIN系统在企业级应用中的普及做出了很大贡献。
典型应用场景
关于“大型数据库”,并没有严格的界定,有说以数据量为准,有说以恢复时间为准。如果综合数据库应用场景来说,大型数据库应用有以下特点:海量数据、高吞吐量;复杂逻辑、高计算量,以及高可用性。从这点上来说,Oracle,DB2就是比较典型的大型数据库,SybaseSQLServer也算是吧。下面分别说明之前三种数据库的应用场景。
Oracle。Oracle的应用,主要在传统行业的数据化业务中,比如:银行、金融这样的对可用性、健壮性、安全性、实时性要求极高的业务;零售、物流这样对海量数据存储分析要求很高的业务。此外,高新制造业如芯片厂也基本都离不开Oracle;电商也有很多使用者,如京东(正在投奔Oracle)、阿里巴巴(计划去Oracle化)。而且由于Oracle对复杂计算、统计分析的强大支持,在互联网数据分析、数据挖掘方面的应用也越来越多。一个典型场景是这样的:
某电信公司(非国内)下属某分公司的数据中心,有4台OracleSun的大型服务器用来安装Solaris *** 作系统和Oracle并提供计算服务,3台SunStorage磁盘阵列来提供Oracle数据存储,12台IBM小型机,一台OracleExadata服务器,一台500T的磁带机用来存储历史数据,San连接内网,使用Tuxedo中间件来保证扩展性和无损迁移。建立支持高并发的Oracle数据库,通过OLTP系统用来对海量数据实时处理、 *** 作,建立高运算量的Oracle数据仓库,用OLAP系统用来分析营收数据及提供自动报表。总预算约750万美金。
MySQL。MySQL基本是生于互联网,长于互联网。其应用实例也大都集中于互联网方向,MySQL的高并发存取能力并不比大型数据库差,同时价格便宜,安装使用简便快捷,深受广大互联网公司的喜爱。并且由于MySQL的开源特性,针对一些对数据库有特别要求的应用,可以通过修改代码来实现定向优化,例如SNS、LBS等互联网业务。一个典型的应用场景是:
某互联网公司,成立之初,仅有PC数台,通过LAMP架构迅速搭起网站框架。随着业务扩张、市场扩大,迅速发展成为6台Dell小型机的中型网站。现在花了三年,终于成为垂直领域的最大网站,计划中的数据中心,拥有Dell机架式服务器40台,总预算20万美金。
MSSQLServer。windows生态系统的产品,好处坏处都很分明。好处就是,高度集成化,微软也提供了整套的软件方案,基本上一套win系统装下来就齐活了。因此,不那么缺钱,但很缺IT人才的中小企业,会偏爱MSSQLServer。例如,自建ERP系统、商业智能、垂直领域零售商、餐饮、事业单位等等。
1996年,BillGates亲自出手,从Borland挖来了大牛Anders,搞定了C
1零基础学习微信小程序开发,之前需要学习哪些知识,谢谢
非计算机基础不建议学习,因为等你学会了,两年时间也过去了。
1、微信官方为小程序提供了大量的接口api,开发小程序需要有基本的Javascript,HTML,CSS的基础。
2、小程序开发,常见使用“MINA”框架
Apache Mina Server 是一个网络通信应用框架,也就是说,它主要是对基于TCP/IP、UDP/IP协议栈的通信框架(当然,也可以提供JAVA 对象的序列化服务、虚拟机管道通信服务等),Mina 可以帮助我们快速开发高性能、高扩展性的网络通信应用,Mina 提供了事件驱动、异步(Mina 的异步IO 默认使用的是JAVA NIO 作为底层支持) *** 作的编程模型。
这个框架为微信小程序的运行提供了丰富的组件和API。要学会和掌握小程序的框架结构、数据绑定机制、模板、数据缓存、常用组件和API等相关知识。
2微信小程序开发,需要学习哪些技术
1、熟练掌握HTML语言、CSS、JavaScript HTML就是超文本标记语言的简写,HTML是网页开发前端三剑客之一,主要负责网页的骨架,就如同动物的骨架一样,HTML语言就是支撑网页布局的骨架。
CSS主要负责网页样式,网页内容如何分布,板块背景,颜色等外观问题可以有CSS控制。JavaScript是一种动态的脚本语言,在服务器端迸发出非凡的活力,成为当前非常活跃的语言之一。
因此想要做小程序开发,就必须要掌握HTML语言、CSS、JavaScript。 2、服务器语言 如果不是专业的后端开发者,可能后端有一定的难度其学习曲线较陡。
但是,仍然建议开发者学习一下后端语言,至少需要了解大致的原因框架,能够看懂其代码逻辑,这样不仅可以很好实现前后端的配合,也能够在小程序出现bug的时候扯皮用。服务器的语言有很多比较常用的是PHP、Java、Python、ASP等技术,建议开发者根据公司内部技术的使用情况挑选进行学习。
3、数据库语言 如果公司数据量不大,架构不复杂的话数据库语言相对来说是比较简单的,一般学会一些常用的命令以及常出现的问题就能够应付使用。常用的数据库有免费的MySQL、msSQL、MongoDB、Oracle等数据库。
我是来混分的
我的意见是
创建索引, 移除历史数据到备份表中
下面的内容来自别人总结的, 呵呵
1、1、调整数据结构的设计。这一部分在开发信息系统之前完成,程序员需要考虑是否使用ORACLE数据库的分区功能,对于经常访问的数据库表是否需要建立索引等。
2、2、调整应用程序结构设计。这一部分也是在开发信息系统之前完成,程序员在这一步需要考虑应用程序使用什么样的体系结构,是使用传统的Client/Server两层体系结构,还是使用Browser/Web/Database的三层体系结构。不同的应用程序体系结构要求的数据库资源是不同的。
3、3、调整数据库SQL语句。应用程序的执行最终将归结为数据库中的SQL语句执行,因此SQL语句的执行效率最终决定了ORACLE数据库的性能。ORACLE公司推荐使用ORACLE语句优化器(Oracle Optimizer)和行锁管理器(row-level manager)来调整优化SQL语句。
4、4、调整服务器内存分配。内存分配是在信息系统运行过程中优化配置的,数据库管理员可以根据数据库运行状况调整数据库系统全局区(SGA区)的数据缓冲区、日志缓冲区和共享池的大小;还可以调整程序全局区(PGA区)的大小。需要注意的是,SGA区不是越大越好,SGA区过大会占用 *** 作系统使用的内存而引起虚拟内存的页面交换,这样反而会降低系统。
5、5、调整硬盘I/O,这一步是在信息系统开发之前完成的。数据库管理员可以将组成同一个表空间的数据文件放在不同的硬盘上,做到硬盘之间I/O负载均衡。
6、6、调整 *** 作系统参数,例如:运行在UNIX *** 作系统上的ORACLE数据库,可以调整UNIX数据缓冲池的大小,每个进程所能使用的内存大小等参数。
实际上,上述数据库优化措施之间是相互联系的。ORACLE数据库性能恶化表现基本上都是用户响应时间比较长,需要用户长时间的等待。但性能恶化的原因却是多种多样的,有时是多个因素共同造成了性能恶化的结果,这就需要数据库管理员有比较全面的计算机知识,能够敏感地察觉到影响数据库性能的主要原因所在。另外,良好的数据库管理工具对于优化数据库性能也是很重要的。
ORACLE数据库性能优化工具
常用的数据库性能优化工具有:
1、1、ORACLE数据库在线数据字典,ORACLE在线数据字典能够反映出ORACLE动态运行情况,对于调整数据库性能是很有帮助的。
2、2、 *** 作系统工具,例如UNIX *** 作系统的vmstat,iostat等命令可以查看到系统系统级内存和硬盘I/O的使用情况,这些工具对于管理员弄清出系统瓶颈出现在什么地方有时候很有用。
3、3、SQL语言跟踪工具(SQL TRACE FACILITY),SQL语言跟踪工具可以记录SQL语句的执行情况,管理员可以使用虚拟表来调整实例,使用SQL语句跟踪文件调整应用程序性能。SQL语言跟踪工具将结果输出成一个 *** 作系统的文件,管理员可以使用TKPROF工具查看这些文件。
4、4、ORACLE Enterprise Manager(OEM),这是一个图形的用户管理界面,用户可以使用它方便地进行数据库管理而不必记住复杂的ORACLE数据库管理的命令。
5、5、EXPLAIN PLAN——SQL语言优化命令,使用这个命令可以帮助程序员写出高效的SQL语言。
ORACLE数据库的系统性能评估
信息系统的类型不同,需要关注的数据库参数也是不同的。数据库管理员需要根据自己的信息系统的类型着重考虑不同的数据库参数。
1、1、在线事务处理信息系统(OLTP),这种类型的信息系统一般需要有大量的Insert、Update *** 作,典型的系统包括民航机票发售系统、银行储蓄系统等。OLTP系统需要保证数据库的并发性、可靠性和最终用户的速度,这类系统使用的ORACLE数据库需要主要考虑下述参数:
l l 数据库回滚段是否足够?
l l 是否需要建立ORACLE数据库索引、聚集、散列?
l l 系统全局区(SGA)大小是否足够?
l l SQL语句是否高效?
2、2、数据仓库系统(Data Warehousing),这种信息系统的主要任务是从ORACLE的海量数据中进行查询,得到数据之间的某些规律。数据库管理员需要为这种类型的ORACLE数据库着重考虑下述参数:
l l 是否采用B-索引或者bitmap索引?
l l 是否采用并行SQL查询以提高查询效率?
l l 是否采用PL/SQL函数编写存储过程?
l l 有必要的话,需要建立并行数据库提高数据库的查询效率
SQL语句的调整原则
SQL语言是一种灵活的语言,相同的功能可以使用不同的语句来实现,但是语句的执行效率是很不相同的。程序员可以使用EXPLAIN PLAN语句来比较各种实现方案,并选出最优的实现方案。总得来讲,程序员写SQL语句需要满足考虑如下规则:
1、1、尽量使用索引。试比较下面两条SQL语句:
语句A:SELECT dname, deptno FROM dept WHERE deptno NOT IN
(SELECT deptno FROM emp);
语句B:SELECT dname, deptno FROM dept WHERE NOT EXISTS
(SELECT deptno FROM emp WHERE deptdeptno = empdeptno);
这两条查询语句实现的结果是相同的,但是执行语句A的时候,ORACLE会对整个emp表进行扫描,没有使用建立在emp表上的deptno索引,执行语句B的时候,由于在子查询中使用了联合查询,ORACLE只是对emp表进行的部分数据扫描,并利用了deptno列的索引,所以语句B的效率要比语句A的效率高一些。
2、2、选择联合查询的联合次序。考虑下面的例子:
SELECT stuff FROM taba a, tabb b, tabc c
WHERE aacol between :alow and :ahigh
AND bbcol between :blow and :bhigh
AND cccol between :clow and :chigh
AND akey1 = bkey1
AMD akey2 = ckey2;
这个SQL例子中,程序员首先需要选择要查询的主表,因为主表要进行整个表数据的扫描,所以主表应该数据量最小,所以例子中表A的acol列的范围应该比表B和表C相应列的范围小。
3、3、在子查询中慎重使用IN或者NOT IN语句,使用where (NOT) exists的效果要好的多。
4、4、慎重使用视图的联合查询,尤其是比较复杂的视图之间的联合查询。一般对视图的查询最好都分解为对数据表的直接查询效果要好一些。
5、5、可以在参数文件中设置SHARED_POOL_RESERVED_SIZE参数,这个参数在SGA共享池中保留一个连续的内存空间,连续的内存空间有益于存放大的SQL程序包。
6、6、ORACLE公司提供的DBMS_SHARED_POOL程序可以帮助程序员将某些经常使用的存储过程“钉”在SQL区中而不被换出内存,程序员对于经常使用并且占用内存很多的存储过程“钉”到内存中有利于提高最终用户的响应时间。
CPU参数的调整
CPU是服务器的一项重要资源,服务器良好的工作状态是在工作高峰时CPU的使用率在90%以上。如果空闲时间CPU使用率就在90%以上,说明服务器缺乏CPU资源,如果工作高峰时CPU使用率仍然很低,说明服务器CPU资源还比较富余。
使用 *** 作相同命令可以看到CPU的使用情况,一般UNIX *** 作系统的服务器,可以使用sar –u命令查看CPU的使用率,NT *** 作系统的服务器,可以使用NT的性能管理器来查看CPU的使用率。
数据库管理员可以通过查看v$sysstat数据字典中“CPU used by this session”统计项得知ORACLE数据库使用的CPU时间,查看“OS User level CPU time”统计项得知 *** 作系统用户态下的CPU时间,查看“OS System call CPU time”统计项得知 *** 作系统系统态下的CPU时间, *** 作系统总的CPU时间就是用户态和系统态时间之和,如果ORACLE数据库使用的CPU时间占 *** 作系统总的CPU时间90%以上,说明服务器CPU基本上被ORACLE数据库使用着,这是合理,反之,说明服务器CPU被其它程序占用过多,ORACLE数据库无法得到更多的CPU时间。
数据库管理员还可以通过查看v$sesstat数据字典来获得当前连接ORACLE数据库各个会话占用的CPU时间,从而得知什么会话耗用服务器CPU比较多。
出现CPU资源不足的情况是很多的:SQL语句的重解析、低效率的SQL语句、锁冲突都会引起CPU资源不足。
1、数据库管理员可以执行下述语句来查看SQL语句的解析情况:
SELECT FROM V$SYSSTAT
WHERE NAME IN
('parse time cpu', 'parse time elapsed', 'parse count (hard)');
这里parse time cpu是系统服务时间,parse time elapsed是响应时间,用户等待时间
waite time = parse time elapsed – parse time cpu
由此可以得到用户SQL语句平均解析等待时间=waite time / parse count。这个平均等待时间应该接近于0,如果平均解析等待时间过长,数据库管理员可以通过下述语句
SELECT SQL_TEXT, PARSE_CALLS, EXECUTIONS FROM V$SQLAREA
ORDER BY PARSE_CALLS;
来发现是什么SQL语句解析效率比较低。程序员可以优化这些语句,或者增加ORACLE参数SESSION_CACHED_CURSORS的值。
2、数据库管理员还可以通过下述语句:
SELECT BUFFER_GETS, EXECUTIONS, SQL_TEXT FROM V$SQLAREA;
查看低效率的SQL语句,优化这些语句也有助于提高CPU的利用率。
3、3、数据库管理员可以通过v$system_event数据字典中的“latch free”统计项查看ORACLE数据库的冲突情况,如果没有冲突的话,latch free查询出来没有结果。如果冲突太大的话,数据库管理员可以降低spin_count参数值,来消除高的CPU使用率。
内存参数的调整
内存参数的调整主要是指ORACLE数据库的系统全局区(SGA)的调整。SGA主要由三部分构成:共享池、数据缓冲区、日志缓冲区。
1、 1、 共享池由两部分构成:共享SQL区和数据字典缓冲区,共享SQL区是存放用户SQL命令的区域,数据字典缓冲区存放数据库运行的动态信息。数据库管理员通过执行下述语句:
select (sum(pins - reloads)) / sum(pins) "Lib Cache" from v$librarycache;
来查看共享SQL区的使用率。这个使用率应该在90%以上,否则需要增加共享池的大小。数据库管理员还可以执行下述语句:
select (sum(gets - getmisses - usage - fixed)) / sum(gets) "Row Cache" from v$rowcache;
查看数据字典缓冲区的使用率,这个使用率也应该在90%以上,否则需要增加共享池的大小。
2、 2、 数据缓冲区。数据库管理员可以通过下述语句:
SELECT name, value FROM v$sysstat WHERE name IN ('db block gets', 'consistent gets','physical reads');
来查看数据库数据缓冲区的使用情况。查询出来的结果可以计算出来数据缓冲区的使用命中率=1 - ( physical reads / (db block gets + consistent gets) )。
这个命中率应该在90%以上,否则需要增加数据缓冲区的大小。
3、 3、 日志缓冲区。数据库管理员可以通过执行下述语句:
select name,value from v$sysstat where name in ('redo entries','redo log space requests');查看日志缓冲区的使用情况。查询出的结果可以计算出日志缓冲区的申请失败率:
申请失败率=requests/entries,申请失败率应该接近于0,否则说明日志缓冲区开设太小,需要增加ORACLE数据库的日志缓冲区。
0网站所选择的网络提供商:网通电信两个交叉通信很慢,考虑那些两个都接入速度很快的,比如网信通(我以前公司的网站和游戏都在上面)
1网站架构体系(WEB服务器?多少、数据库服务器多少?、缓存服务器、服务器、备份服务器)
2数据结构及数据算法(数据库结构一定要优化,如果表太大,请用分表设置模式,如果能分数据库参考petshop)
3缓存(大网站不能没有缓存:数据库缓存、数据缓存、页面缓存、缓存)
4压力测试(没有这个测试的大网站表搞笑了)
5代码优化(算法真tmd的很重要)
6开发架构(架构扩展性一定要考虑,很多时候架构能解决很多问题)
7测试测试再测试
8不停的监控在监控性能及运行状态
一个好的网站在进行实际页面的建置之前,首先要牢记用户优先,要考虑大多数人的连线状况、考虑使用者的浏览器,以及内容永远第一等等。
1、用户
无论什么时候,不管是着手准备设计HomePage之前,还是正在设计之中,甚或是已经设计完毕,有一个最高行动准则一定要牢记在心,那就是∶用户优先。因为没有用户去光顾,任何自认再好的HomePage都是没有意义的。
2、内容永远第一
“内容永远第一”,这句话适合书籍,更适合网络上的主页,而且几乎每个参与提供意见的人都举双手赞成这句话。没有内容的书籍令人讨厌,但至少您还可以很快判断出来,而HomePage呢?您可能得耗费一整个晚上的时间与金钱,才会发现原来站点里根本没有您要的东西,这种痛苦真不是三言两语可以形容。内容可以是任何东西,包括文字、、影像、声音等等,但请记住一点:一定要跟这个网站所要提供给人的讯息有关系。再提醒一次∶内容永远第一!
3、连线状况
您或许使用办公室的ISDN,也可能使用学校的高速专线,但您都必须想到,目前大多数人所使用的还是通过电话线路的缓慢连线方式 ,而且“塞车”塞得很严重。所以您在设计HomePage时就必需以这种普遍的连线状况为设计的参考量,不要放置一堆会加重塞车情形或让人等得发火的玩艺儿。最后,完成之后, 您最好自己使用“小猫”联网亲自测试一下。
4、浏览器
必需考虑使用者的浏览器软件,如果您想要让所有的人都可以毫无障碍地观看您的页面,那么最好使用所有浏览器都可以阅读的格式,不要使用只有部分浏览器支持的格式或程序技巧。如果想要展现自己的高超的技术又不想放弃一些潜在的观众,可以考虑在主页中设置几种不同的观赏模式选项(例如纯文字模式、Frame模式、Java模式等等),供浏览者自行选择。
再来看看在著手HomePage的实际建置过程中,应该重点掌握的几个原则。
5、着手规划、确定特色、锁定目标
不管做什么事,一定要进行规划,建设网站尤其如此。规划时必须确定自己网站的性质、提供的内容、目标用户,然后根据本身的软硬件及人员技术条件来设置范围。网络的特点是及时、新鲜、丰富、热闹,这是吸引大家上网的因素,如果本身条件强大,也可以根据上述原则使自己网站成为一个“全方位”信息的提供者,如果不足,就考虑提供单方面的信息;此外,还可以在特殊议题或主题上加以突出,进一步锁定目标观众。
6、首页
首页是最重要的部分,因为它是别人接触这个网站的第一眼。如果是新的站点,最好在第一页就对这个网站的性质与所提供的内容做个扼要说明与导引,让别人判断要不要继续点击。最好第一页就有很清楚的类别栏目选项,而且尽量人性化,让浏览者可以很快找到需要的东西。在设计上,最好秉持干净而清爽的原则。第一、若无需要,尽量不要放置大图或加上不当的程序,因为它会增加下载的时间,导致浏览者失去耐心; 第二、画面不要设计得太过杂乱无章,因为观赏者会找不到所要的东西。记住∶失败的首页会让许多人一去不返……
7、分类
内容的分类很重要,可以按主题分类、按性质分类、或按人类思考的习惯分类等等。一般而言,按大家思考的习惯分类会比较亲切。但无论哪一种分类方法,都要让使用者很容易地找到目标。此外要注意,分类标准最好保持一致,当然,在每个分类选项的旁边或下一行,加上这个选项内容的简要说明最好。
8、互动性
>
以上就是关于SQLServer与MySQL性能相差多大全部的内容,包括:SQLServer与MySQL性能相差多大、微信小程序开发需要学什么知识、mssql大数据检索问题等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)