知识大全 数据库迁移中的Web翻页优化实例
Posted 索引
篇首语:不怕读得少,只怕记不牢。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 数据库迁移中的Web翻页优化实例相关的知识,希望对你有一定的参考价值。
数据库迁移中的Web翻页优化实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
最近忙着把公司的数据库从mysql迁移到oracle 期间作了很多工作来优化oracle平台的性能 不过这里面最大的性能调整还是来自sql 下面举一个web翻页sql调整的例子 环境 Linux version custom (root@web ) (gcc version (Red Hat Linux )) # SMP Thu Jun : : CST Mem: Swap: CPU:两个超线程的Intel(R) Xeon(TM) CPU GHz 优化前语句在mysql里面查询 秒左右出来 转移到oracle后进行在不调整索引和语句的情况下执行时间大概是 秒 调整后执行时间小于 秒 翻页语句 SELECT * FROM (SELECT T * rownum as linenum FROM ( SELECT /*+ index(a ind_old)*/ a category FROM auction_auctions a WHERE a category = AND a closed= AND ends > sysdate AND (a approve_status>= ) ORDER BY a ends) T WHERE rownum < ) WHERE linenum >= 被查询的表 auction_auctions(产品表) 表结构 Code: [Copy to clipboard] SQL> desc auction_auctions; Name Null? Type ID NOT NULL VARCHAR ( ) USERNAME VARCHAR ( ) TITLE CLOB GMT_MODIFIED NOT NULL DATE STARTS NOT NULL DATE DESCRIPTION CLOB PICT_URL CLOB CATEGORY NOT NULL VARCHAR ( ) MINIMUM_BID NUMBER RESERVE_PRICE NUMBER BUY_NOW NUMBER AUCTION_TYPE CHAR( ) DURATION VARCHAR ( ) INCREMENTNUM NOT NULL NUMBER CITY VARCHAR ( ) PROV VARCHAR ( ) LOCATION VARCHAR ( ) LOCATION_ZIP VARCHAR ( ) SHIPPING CHAR( ) PAYMENT CLOB INTERNATIONAL CHAR( ) ENDS NOT NULL DATE CURRENT_BID NUMBER CLOSED CHAR( ) PHOTO_UPLOADED CHAR( ) QUANTITY NUMBER( ) STORY CLOB HAVE_INVOICE NOT NULL NUMBER( ) HAVE_GUARANTEE NOT NULL NUMBER( ) STUFF_STATUS NOT NULL NUMBER( ) APPROVE_STATUS NOT NULL NUMBER( ) OLD_STARTS NOT NULL DATE ZOO VARCHAR ( ) PROMOTED_STATUS NOT NULL NUMBER( ) REPOST_TYPE CHAR( ) REPOST_TIMES NOT NULL NUMBER( ) SECURE_TRADE_AGREE NOT NULL NUMBER( ) SECURE_TRADE_TRANSACTION_FEE VARCHAR ( ) SECURE_TRADE_ORDINARY_POST_FEE NUMBER SECURE_TRADE_FAST_POST_FEE NUMBER 表记录数及大小 SQL> select count(*) from auction_auctions; COUNT(*) SQL> select segment_name bytes blocks from user_segments where segment_name = AUCTION_AUCTIONS ; SEGMENT_NAME BYTES BLOCKS AUCTION_AUCTIONS 表上原有的索引 create index ind_old on auction_auctions(closed approve_status category ends) tablespace tbsindex press ; SQL> select segment_name bytes blocks from user_segments where segment_name = IND_OLD ; SEGMENT_NAME BYTES BLOCKS IND_OLD 表和索引都已经分析过 我们来看一下sql执行的费用 SQL> set autotrace trace; SQL> SELECT * FROM (SELECT T * rownum as linenum FROM (SELECT a * FROM auction_auctions a WHERE a category like % AND a closed= AND ends > sysdate AND (a approve_status>= ) ORDER BY a ends) T WHERE rownum < ) WHERE linenum >= ; rows selected Execution Plan SELECT STATEMENT Optimizer=CHOOSE (Cost= Card= Byt es= ) VIEW (Cost= Card= Bytes= ) COUNT (STOPKEY) VIEW (Cost= Card= Bytes= ) TABLE ACCESS (BY INDEX ROWID) OF AUCTION_AUCTIONS (Cost= Card= Bytes= ) INDEX (RANGE SCAN) OF IND_OLD (NON UNIQUE) (Cost = Card= ) Statistics recursive calls db block gets consistent gets physical reads redo size bytes sent via SQL*Net to client bytes received via SQL*Net from client SQL*Net roundtrips to/from client sorts (memory) sorts (disk) rows processed 我们可以看到这条sql语句通过索引范围扫描找到最里面的结果集 然后通过两个view操作最后得出数据 其中 consistent gets physical reads 我们来看一下这个索引建的到底合不合理 先看下各个查寻列的distinct值 select count(distinct ends) from auction_auctions; COUNT(DISTINCTENDS) SQL> select count(distinct category) from auction_auctions; COUNT(DISTINCTCATEGORY) SQL> select count(distinct closed) from auction_auctions; COUNT(DISTINCTCLOSED) SQL> select count(distinct approve_status) from auction_auctions; COUNT(DISTINCTAPPROVE_STATUS) 页索引里列平均存储长度 SQL> select avg(vsize(ends)) from auction_auctions; AVG(VSIZE(ENDS)) SQL> select avg(vsize(closed)) from auction_auctions; AVG(VSIZE(CLOSED)) SQL> select avg(vsize(category)) from auction_auctions; AVG(VSIZE(CATEGORY)) SQL> select avg(vsize(approve_status)) from auction_auctions; AVG(VSIZE(APPROVE_STATUS)) 我们来估算一下各种组合索引的大小 可以看到closed approve_status category都是相对较低集势的列(重复值较多) 下面我们来大概计算下各种页索引需要的空间 column distinct num column len ends category closed approve_status index : (ends closed category approve_status) press en cha138/Article/program/Oracle/201311/18323相关参考
实例讲解MYSQL数据库的查询优化技术 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 数据库系统
数据库系统是管理信息系统的核心基于数据库的联机事务处理(OLTP)以及联机分析处理(OLAP)是银行企业政府等部门最为重要的计算机应用之一从大多数系统的应用实例来看查询操作在各种数据库操作中所
知识大全 用Oracle中的Statspack诊断数据库性能实例
用Oracle中的Statspack诊断数据库性能实例 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧
知识大全 Oracle Optimizer:迁移到使用基于成本的优化器-----系列1.4
OracleOptimizer:迁移到使用基于成本的优化器-----系列1.4 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,
中国是世界水产养殖第一大国,2011年,我国水产养殖产量和产值分别占世界水产养殖总产量和产值的61.60%和47.42%[1]。但是,目前我国水产养殖仍采用以高密度、高投饵率A
中国是世界水产养殖第一大国,2011年,我国水产养殖产量和产值分别占世界水产养殖总产量和产值的61.60%和47.42%[1]。但是,目前我国水产养殖仍采用以高密度、高投饵率A
中国是世界水产养殖第一大国,2011年,我国水产养殖产量和产值分别占世界水产养殖总产量和产值的61.60%和47.42%[1]。但是,目前我国水产养殖仍采用以高密度、高投饵率A
实例步骤 第一步在myeclipse中新建一个web项目名为webservicetest并导入依赖的jar包(cxfspringa
优化WebSphere性能应用技巧集锦 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 优化Web
ASPX页Web服务调用性能优化 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 文介绍了如何通过