Oracle与Mysql应用总结

导读:在以前开发的时候,一直在使用oracle,甚至参加过oracle的培训,考过Oracle Database 10g Administrator I,自认对oracle还算有些了解,不过最近在做一个分布式数据系统的测试的时候,才有“学到用时方恨少”的感悟。Oracle与Mysql的应用是怎样的呢?在此把最近总结的一些东西陆续跟测试 部的同学们一起分享吧。

1. in如何与list绑定:

一个带in子查询的语句相信对很多人来说都是司空见惯了的,例如:「select * from normaltbl_ora where pk in (1,2,3,4)」、「select * from normaltbl_ora where name in (“manhong”,”yihuan”,”gongyangyu”,”yaolingling”) 」。但是如果in的查询字段上没有建立索引或者无法通过索引查询,那数据库会将该字段与in里面的每个值都进行比较运算,如果记录数有成千上万条甚至以 上,会明显感觉到SQL的CPU开销过大甚至难以负荷,过量的使用这样的语句,将引起数据库的大量硬解析与共享池的SQL碎片。所以,在实际的应用过程 中,我们则可以采用list的方式将这些in字段绑定起来。接下来具体描述如何创建in与list绑定,以及如何去使用它们。

a. 创建数据类型

数值列表数据类型

字符串列表数据类型

b. 创建相关函数

数值列表函数

字符串列表函数

c. 查询

通过数值列表函数查询

通过字符串列表函数查询

2. 关于Hint的使用:

在做分布式数据系统测试的时候,发现它们有一个非常关键的技术点是生成sql的执行计划。而Hint就是这样的一种机制,用来告诉优化器按照我们的 告诉它的方式生成执行计划。Hint可以基于表连接的顺序、表连接的方法、访问路径、并行度等规则对dml语句、或者查查询语句产生作用,通过它我们可以 实现:

1) 使用的优化器的类型

2) 基于代价的优化器的优化目标,是all_rows还是first_rows。

3) 表的访问路径,是全表扫描,还是索引扫描,还是直接利用rowid。

4) 表之间的连接类型

5) 表之间的连接顺序

6) 语句的并行程度

a. Hint语法:

/* */常写代码但较少接触Hint的同学们可千万别误认为这只是代码的简单注释。

举几个简单的应用例子:

i. 尽快地显示前5行记录

ii. 再比如说大数据量、分库分表查询中比较常用到的并行查询操作

试验的时候虽然数据量不大,但是效果倒是还挺明显的,速度之间比对接近于1:2。像淘宝这种大数据量应用,每张数据表都有过千万甚至过亿数据的时 候,使用parallel Hint效果会非常明显,当然数据库主机的CPU的核数越多,系统当前负载越低的时候,parallel Hint的优势将会越加明显。

关于Hint的使用,要尽可的自身去体会才能真正理解其作用,在遇到使用Hint的地方大家可以多关注一下,有时间也可以自己做一些调查验证。

当前名称:Oracle与Mysql应用总结
文章URL:http://www.shufengxianlan.com/qtweb/news13/478813.html

网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等

广告

声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联