分手快乐 发表于 2015-1-16 22:42:22

MYSQL编程:念书总结:Oracle 软件布局

有的时候,一些缺失的功能可以通过别的办法来实现,例如,在MySQL4.1以前,你可以通过使用join方法来替代子查询的功能。在MySQL5.0中,大多数关系型数据库所要求的功能已经都具备。oracle
Oracle数据库服务器次要由两个部分构成:数据库和实例。

实例
.实例的内存布局:SGA(systemglobalareas)和PGA(programglobalareas)
.实例的历程布局:服务历程和背景历程

内存布局:
SGA(systemglobalareas)
1、数据库缓存db_cach_size
.keep缓存池buffer_pool_keep
.recycle缓存池buffer_pool_recycle
.default缓存池db_cache_size-(buffer_pool_keey+buffer_pool_recycle)
2、重做日记缓存log_buffer
3、共享池shared_pool_size
库缓存:用于缓存已剖析并实行过的SQL和PL/SQL程序代码
.享SQL事情区:寄存有SQL语句的语法剖析了局和实行企图。假如共享SQL事情区已没有余暇空间,Oracle将使用LRU算法换出比来很少利用过的SQL语句----->SGA
.有SQL事情区:SQL语句的另外一部分被保留到公有SQL事情区中,包含SQL语句中的绑定变量、情况和会话参数等信息,这些信息是属于实行该语句的用户所公有的,其他用户即便实行不异的SQL语句也不克不及利用这些信息。只要在共享服务器(servers=shared)时,公有SQL事情区才会在SGA中创立。一样平常情形下公有SQL事情区位于PGA中。
#库缓存的巨细与open_cursors亲切相干。open_cursors参数用于指定命据库中可以同时翻开的游标数目,每条查询语句都必要一个游标。
数据库字典缓存:这是一种“行缓存”,即在个中保留的是一条条的纪录,而不像其他缓存那样保留的是缓存块。
4、Java池
5、年夜型池large_pool_size
.举行数据库备份和恢复操纵
.实行具有大批排序操纵的SQL语句
.接待并行化的数据库操纵
#假如没有在SGA区中创立年夜型池,上述操纵所需的缓存空间将在共享池或PGA平分配。


PGA(programglobalareas)
保留服务历程的数据和把持信息的内存布局,这个内存布局长短共享的,只要服务历程自己才干够会见它自已的PGA区。每一个服务历程都有它自已的PGA区,各个服务历程PGA的总和即为实例的PGA区的巨细。
1、公有SQL事情区
在实行对照庞大的查询时(好比决议撑持体系中的查询语句),常常会必要在PGA中创立一个对照年夜的静态缓存区,用来专门实行以下一些必需在内存中举行的操纵:
.排序(orderby,groupby)
sort_area_size
sort_area_retained_size
.毗连(innerjoin)
hash_area_size
.汇合运算(union,interset,minus)
create_bitmap_area_size

#servers=dedicated
公有SQL事情区将保留在服务历程的PGA中
#servers=shared
公有SQL事情区的一部分将保留在SGA区中


2、会话内存区
用于保留用户会话的变量(登录信息)和其他预会话相干的信息
#servers=dedicated
会话内存区将保留在为这个会话供应服务的公用服务历程的PGA中。这时候只要这个服务历程必要利用该会话的会话信息。
#servers=shared
会话内存区将位于SGA区中而不是PGA区中,由于会话信息被一切的共享服务历程利用。

workarea_size_policy=auto
pga_aggregate_target=XXX


历程布局

服务历程:
1、公用服务历程:一个公用服务历程只能为一个用户供应服务
2、共享服务历程:一个共享服务历程能够为多个用户供应服务
.剖析并实行用户所提交的SQL语句。
.在SGA区的数据库缓存中搜刮用户历程所会见的数据,假如数据不在缓存中,则必要从硬盘数据文件中读取所需的数据,而将它们复制到缓存中。
.将数据前往给用户历程。

背景历程
DBWn
db_writer_processes
.当用户实行insert或update等操纵时,会起首将拔出的数据写进数据库缓存。在这个过程当中,假如Oracle在数据库缓存的LRU列表中搜刮了必定数据(db_block_max_scan)的缓存块后,仍旧没有找到可用的余暇缓存块,DBWR历程将启动,由DBWR历程将脏缓存块写进数据文件以后,数据库缓存将取得更多的余暇缓存块。
.当反省点产生时,将启动DWBR历程
.当数据库缓存LRU列表的长度到达db_block_write_batch指定值的一半时,DBWR历程将启动。
.若产生超时(约莫3秒内未被启动),DBWR历程被启动。
LGWR
.用户经由过程commit语句提交以后事件
.重做日记缓存写满三分之一
.DBWR历程入手下手将脏缓存块写进数据文件
.若产生超时(约莫3秒),此时会启动LGWR
CKPT
log_checkpoint_timeout
log_checkpoint_interval
log_checkpoint_to_alert

SMON
PMON
ARCn
archive_log_start

RECO
Dnnn


尽管DBaaS模式有缺点,但它还是适合某些客户群体,这为解决方案提供商提供了新的商机。鉴于云服务的增长,解决方案提供商除了拥抱这些技术还有什么选择呢?如果他们不这样做,他们就会冒着被竞争对手击败的风险。但他们不能只想到如何把DBaaS的利润率与企业内部系统相比较。

海妖 发表于 2015-1-20 19:09:05

如果是将来做数据库的开发设计,就应该详细学习T-SQL的各种细节,包括T-SQL的程序设计、存储过程、触发器以及具体使用某个开发语言来访问数据库。

爱飞 发表于 2015-1-29 15:33:45

很多书籍啊,不过个人认为看书太慢,还不如自己学。多做实际的东西,就会遇到很多问题,网上搜下解决问题。不断重复这个过程,在配合sql的F1功能。

小妖女 发表于 2015-2-15 01:59:34

再开发调试阶段和OLAP环境中,外键是可以建立的。新版本中加入了SETNULL和SETDEFAULT属性,能够提供能好的级联设置。

深爱那片海 发表于 2015-3-4 10:56:49

备份方面可能还是一个老大难的问题。不能单独备份几个表总是感觉不爽。灵活备份的问题不知道什么时候才能解决。

因胸联盟 发表于 2015-3-11 18:32:17

在select语句中可以使用groupby子句将行划分成较小的组,然后,使用聚组函数返回每一个组的汇总信息,另外,可以使用having子句限制返回的结果集。

不帅 发表于 2015-3-19 07:33:41

原理很简单,对要求长时间计算某一时间点的报表生成和防用户操作错误很有帮助。但是比起Oracle10g的闪回技术还是细粒度不够。可惜!

谁可相欹 发表于 2015-3-27 13:10:04

原来公司用过MYSQL自己也只是建个表写个SQL
页: [1]
查看完整版本: MYSQL编程:念书总结:Oracle 软件布局