您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 咨询培训 > DB2系统架构,SQL语句生命周期
DB2数据库性能优化第1课DATAGURU专业数据分析社区DB2数据库性能优化第1课-DB2系统架构,SQL语句生命周期本课目标完成本课后,你应该能够–理解不同工作负载的区别(OLTP,OLAP)–为不同工作负载选择合适的数据库功能版本DATAGURU专业数据分析社区–了解数据库内部基本结构:基本存储单元,工作线程,内存,功能部件–理解SQL语句在数据库引擎中处理的过程OLTP与OLAP对比OLTPOLAP用户操作人员,低层管理人员决策人员,高级管理人员功能日常操作处理分析决策DB设计面向应用面向主题数据当前的,最新的细节的,二维的分立的历史的,聚集的,多维的集成的,统一的存取读/写数十条记录读上百万条记录工作单位简单的事务复杂的查询DATAGURU专业数据分析社区工作单位简单的事务复杂的查询用户数上千个上百个DB大小100MB-GB100GB-TB时间要求具有实时性对时间的要求不严格主要应用数据库数据仓库来源:=rOI_OV_l1bBN46vfsKOHaNxeRpUEBQhz4qNxdqY4It3yDoRl6-6Kw4yoT2fu9_LU_5b2wJldjuhdoq05IKz1xqDB2主要功能版本DB2TranSingleDatabaseViewSQL1’SQL1’’SQL1’’’SQL1SingleDatabaseViewDATAGURU专业数据分析社区LogDatabaseCoreDB2LogDB2LogDB2LogDB2Part1Part2Part3SQL1’SQL1’’SQL1’’’DB2DataPartitioningFeature-IdealforwarehousingandOLAPscaleoutandmassivelyparallelqueryprocessingLogDB2DB2DB2DB2pureScaleDataSharing-Idealforactive/activeOLTP/ERPscaleoutTran1Tran2Tran3SharedDataAccessDB2forOLTPCoreDB2DB2pureScale用于可用性要求很高,处理能力需要水平扩展的系统DATAGURU专业数据分析社区DB2forOLAPDB2DPF(DataPartitioningFeature)–SharedNothingArchitecture数据库由多个数据库分区构成每个数据库分区可运行在不同的节点上每个数据库分区拥有独立的资源(Engine,LogMg.,LockMg.,Caches,etc.)SQL任务可以在所有分区上并行处理分区数据库对用户和应用而言是透明的DATAGURU专业数据分析社区FastcommunicationmanagerDataLogDatabasePartitiondatalogdatalogdatalogdatalogDB2forOLAP(数据如何分布数据如何分布数据如何分布数据如何分布)CREATETABLEcustomer(cust_idVARCHAR(20),genderCHAR(1))DISTRIBUTEBYHASH(cust_id);CREATETABLEsales(cust_idVARCHAR(20),qtyINTEGER)DISTRIBUTEBYHASH(cust_id);Customercust_idGenderSmithFBillMWoeMZoolMMaryFSalescust_idQtySmith1Smith2Smith3Zool1Zool232768I87654321I87654321Hash(cust_id)DATAGURU专业数据分析社区Partition0Partition1Partition2customersalesSmithFSmith1Smith2Smith3WoeMWoe1Woe2BillMBill1Bill2MaryFMary1Mary2ZoolFZool2Zool1Zool3021021021032768I876543210210210210I87654321DB2数据库架构工作线程工作线程工作线程工作线程及内存及内存及内存及内存DATAGURU专业数据分析社区及内存及内存及内存及内存数据存储数据存储数据存储数据存储DB2数据库基础存储单元-页面在存储及内存中的基本访问单元主要分为数据页面,索引页面大小4K,8K,16K,32KDATAGURU专业数据分析社区大小4K,8K,16K,32KOLTP系统更多随机IO,避免页面更新冲突,倾向选择小页面;OLAP系统更看中顺序IO,通常选择大页面数据页面结构及RID剩余可用空间PageHeader-1PageHeader3800340038003700Page473Page105610561RIDpage#slot#SlotDATAGURU专业数据分析社区Record0Record2473,2Record0删除记录后空间,REORG之后可用RID(RowID)可指向唯一一条记录,物理存在于索引页面,或数据页面中有记录溢出的位置。有三种大小的RID,4字节,6字节及8字节,与表空间属性及表是否做RANGE分区有关索引页面及B+树索引结构Keyvalue:RID,RIDPageHeader38003700Page287Keyvalue:RIDSlotDATAGURU专业数据分析社区SELECT*FROMt1WHEREid=170DB2进程与线程DB2自V9.5之后使用多线程模式db2sysc是DB2数据库服务主进程可用命令“db2pd–edus”显示其工作线程主要工作线程及功能–db2tcpcmTCP侦听,db2ipccmIPC侦听DATAGURU专业数据分析社区–db2tcpcmTCP侦听,db2ipccmIPC侦听–db2agent客户端服务线程,接受请求、编译、执行语句,返回结果–db2pfchr预读线程,从磁盘读页面到bufferpool–db2pclnr将脏页面写入磁盘–db2loggw/db2loggr日志写入/读取线程–db2stmm自动内存调节–db2dlock死锁检测线程DB2内存DBMSmemoryFMPmemoryDatabaseBMemoryINSTANCEMEMORY(perpartition)DatabaseAMemoryIdb2startdatabaseactivationMemoryowned/allocatedbydb2syscprocess三类内存三类内存三类内存三类内存实例内存实例内存实例内存实例内存数据库共享内存数据库共享内存数据库共享内存数据库共享内存私有内存私有内存私有内存私有内存DATAGURU专业数据分析社区13LOCALCommunicationMemoryMemoryMemoryAPPLMemoryAPPLMemoryPrivateMemoryLOCALCommunicationMemoryIIdb2startperlocalconnection私有内存私有内存私有内存私有内存DB2内存-数据库内存区域UtilityHeapCatalogCacheDatabaseHeapOverflowReservedOVERFLOWPackageCacheDATAGURU专业数据分析社区BUFFERPOOLSLOCKLISTSharedSortheapHeapCatalogCacheDATABASEMEMORYBlueareasdenotecommittedmemory数据库是耗用内存最大的地方,通常将内存分配给BUFFERPOOLS及SORTHEAP原则是使操作系统有剩余的可用物理内存,不要用到pagingspaceSELECT语句在DB2数据库中的处理过程1.客户端将语句发给Coordinatoragent2.Coordinatoragent检查Packagecache中是否有已编译过的该语句,没有的话编译并生成执行计划(accessplan)3.将编译生成的执行计划保存到Packagecache4.Coordinatoragent开始执行,调用SubagentsDATAGURU专业数据分析社区4.Coordinatoragent开始执行,调用Subagents做并行扫描及排序5.Subagents发送异步读请求给Prefetchers6.Prefetchers将数据页面从表空间对应的存储读入Bufferpool7.Subagents从Bufferpool读取数据并排序8.Coordinatoragent将排好序的记录发给客户端INSERT语句在DB2数据库中的处理过程1.客户端将语句发给Coordinatoragent2.Agent检查Packagecache中是否有已编译过的该语句,没有的话编译并生成执行计划(accessplan)3.将编译生成的执行计划保存到Packagecache4.Agent开始执行5.Agent搜索能够存放的下该记录的数据页面6.DATAGURU专业数据分析社区6.找的到的话,将该页面从表空间对应的存储读入Bufferpool(找不到需要分配新页面)7.在Locklist产生该行记录的Xlock8.产生INSERT语句相关日志,并写入LogBuffer9.将记录写入Bufferpool中页面(此时该页面在内存中内容与存储上不一致,称之为脏页面)10.将INSERT语句成功执行的返回码(sqlcode=0)发送给客户端COMMIT语句在DB2数据库中的处理过程1.客户端将语句发给Coordinatoragent2.Agent将COMMIT日志写入LogBuffer3.Agent等待Logger将LogBuffer中内容写入磁盘4.Logger写磁盘DATAGURU专业数据分析社区4.Logger写磁盘5.Logger发送信号给等待中的Agent6.Agent释放锁7.Agent返回成功信号给客户端课后作业pureScale适合什么类型的应用?OLAP系统关键的设计要求是什么?DB2是多进程模式还是多线程模式?db2agent有哪些功能?DB2中内存主要应该分配给哪些区域?DATAGURU专业数据分析社区DB2中内存主要应该分配给哪些区域?Packagecache有什么作用?DB2锁在什么时候出现,保存在什么地方,什么时候释放?法律声明【声明】本视频和幻灯片为炼数成金网络课程的教学资料,所有资料只能在课程内使用,不得在课程以外范围散播,违者将可能被追究法律和经济责任。DATAGURU专业数据分析社区播,违者将可能被追究法律和经济责任。课程详情访问炼数成金培训网站炼数成金逆向收费式网络课程–(炼数成金)是专业数据分析网站,提供教育,媒体,内容,社区,出版,数据分析业务等服务。我们的课程采用新兴的互联网教育形式,独创地发展了逆向收费式网络培训课程模式。既继承传统教育重学习氛围,重竞争压力的特点,同时又发挥互联网的威力打破时空限制,把天南地北志同道合的朋友组织在一起交流学习,使到原先孤立的学习个体组合成有组织的探索力量。并且把原先动辄成千上万的学习成本,直线下降至百元范围,造福大众。我们的目标是:低成本传播高价值知识,构架中国第一的网上知识流转阵地。DATAGURU专业数据分析社区知识流转阵地。关于逆向收费式网络的详情,请看我们的培训网站时间
本文标题:DB2系统架构,SQL语句生命周期
链接地址:https://www.777doc.com/doc-6162920 .html