当前位置: 首页 > news >正文

班级网站首页怎么做手机搜索引擎排名

班级网站首页怎么做,手机搜索引擎排名,北龙建设集团有限公司企业网站,品牌网站建设报价导言 在MySQL业务迁移OceanBase过程中,经常遇到的一个问题是分页查询结果的不稳定性,这通常需要数据库DBA介入绑定执行计划。下面简单举个例子,以便大家更好地理解为什么有的分页查询,在原来的MySQL数据库下运行没有问题&#xf…

导言

在MySQL业务迁移OceanBase过程中,经常遇到的一个问题是分页查询结果的不稳定性,这通常需要数据库DBA介入绑定执行计划。下面简单举个例子,以便大家更好地理解为什么有的分页查询,在原来的MySQL数据库下运行没有问题,但迁移到OceanBase后出现了问题。

select t1.* 
from t1 left join t2 on t1.c1 = t2.c1
limit 10,10;

因为MySQL 5.6只有Nested Loop Join算法,这个查询只会生成下面的计划:

================================================
|ID|OPERATOR               |NAME|EST. ROWS|COST|
------------------------------------------------
|0 |LIMIT                  |    |10       |862 |
|1 | NESTED-LOOP OUTER JOIN|    |20       |862 |
|2 |  TABLE SCAN           |t1  |20       |46  |
|3 |  TABLE GET            |t2  |1        |40  |
================================================Outputs & filters:
-------------------------------------0 - output([t1.c1], [t2.c1]), filter(nil), limit(10), offset(10)1 - output([t1.c1], [t2.c1]), filter(nil),conds(nil), nl_params_([t1.c1])2 - output([t1.c1]), filter(nil),access([t1.c1]), partitions(p0)3 - output([t2.c1]), filter(nil),access([t2.c1]), partitions(p0)

从这个计划来看,查询输出会继承t1表的序,如果客户直接在这个计划的基础上面做业务分页处理,业务代码可以正常运行。但是,一旦用户对t1表做了索引变更,引起MySQL的计划变化,该查询的分页结果也会随之改变,导致业务出错。这个问题的本质是业务使用了非标准的分页查询,而MySQL的“特性”使得业务能正常运行。

如果业务迁移到OceanBase,由于OceanBase支持多种join算法,可能会生成如下的计划:

================================================
|ID|OPERATOR              |NAME|EST. ROWS|COST |
------------------------------------------------
|0 |LIMIT                 |    |10       |85285|
|1 | HASH RIGHT OUTER JOIN|    |20       |85285|
|2 |  TABLE SCAN          |t2  |100000   |38681|
|3 |  TABLE SCAN          |t1  |20       |46   |
================================================Outputs & filters: 
-------------------------------------0 - output([t1.c1], [t2.c1]), filter(nil), limit(10), offset(10)1 - output([t1.c1], [t2.c1]), filter(nil), equal_conds([t1.c1 = t2.c1]), other_conds(nil)2 - output([t2.c1]), filter(nil), access([t2.c1]), partitions(p0)3 - output([t1.c1]), filter(nil), access([t1.c1]), partitions(p0)

这个计划就不会继承t1表的序,如果客户直接在这个计划的基础上面做业务分页处理,业务代码运行结果可能不对。

为了能够让这一类业务平滑迁移到OceanBase,我们需要为这种分页查询主动添加order by。

注意:我们不推荐使用该功能迁移MySQL业务

分页保序功能开关

针对上述问题,OceanBase 4.2.1 BP2引入了分页保序功能,只在MySQL租户下可以使用,增加隐藏配置项_preserve_order_for_pagination、查询hint PRESERVE_ORDER_FOR_PAGINATION用于控制查询是否使用分页保序功能。

隐藏配置项

_preserve_order_for_pagination隐藏配置为租户级别,可以控制租户是否打开或关闭分页保序功能,当前默认行为是关闭。如果需要打开租户级别的分页保序功能,可以使用如下命令:

alter system set _preserve_order_for_pagination = 1;

下一个章节会介绍打开该功能后,数据库会做一些什么事情,达到什么效果。

查询HINT

为了增加更细粒度的控制手段,OceanBase还提供了查询级别的控制方式,例如,如果需要针对特定查询打开分页保序功能:

select /*+OPT_PARAM('PRESERVE_ORDER_FOR_PAGINATION', 'TRUE')*/
* from t1 limit 10;

注意,该HINT不能用于控制特定的查询块是否打开分页保序功能,只能用于控制整个查询是否打开分页保序功能!

对于上面介绍的两种控制方式,OceanBase优先使用HINT。举个例子说明,如果租户设置了隐藏配置项为打开状态,同时在查询中使用/*+OPT_PARAM('PRESERVE_ORDER_FOR_PAGINATION', 'FALSE')*/,那么该查询不会开启分页保序功能。

分页保序功能

保序场景1

用户打开分页保序功能之后OceanBase会做什么事情呢?还是举个例子说明:

select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 limit 10,10;

针对这种查询,OceanBase首先会对查询结果排序,然后对排序的结果分页处理,改写之后的查询如下:

select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 
order by t1.c1, t2.c2 limit 10,10;

排序之后的分页结果必然是稳定的,无论OceanBase选择的是什么计划,或者分页过程有任何计划变化,都不会影响分页查询的结果。

保序场景2

还有一种场景,用户查询已经有order by语句块了,但是由于只针对部分结果排序,导致分页结果还是不稳定,例如:

select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 
order by t1.c1 limit 10,10;

针对这种场景,如果打开了分页保序功能,OceanBase会在用户期望排序结果的前提下,额外增加排序字段。

select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 
order by t1.c1, t2.c2 limit 10,10;

保序场景3

另外还存在一种和场景 2 相似的场景,查询中有 order by 语句块针对部分结果排序,但 order by 语句块在视图内部。该场景下,如果打开了分页保序功能,无论 order by 语句块外层还有多少层视图,OceanBase 都会额外增加排序字段,例如:

select * from select * from (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 order by t1.c1) 
)limit 10,10;==>select * from select * from (select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 order by t1.c1, t1.c2) 
)limit 10,10;

保序场景4

对于其他场景,预期想要的结果序会被改变,例如:

select t2.c1, t2.c2
from (select * from t1 order by t1.c1, t1.c2) V1
left join t2 on V.c1 = t2.c1
limit 10,10;

这个查询用户预期可能是按照t1表排序之后再分页查询结果,但是实际上任何SQL语义并不会保证查询的数据一定需要按照t1表的结果排序之后再分页。OceanBase会在最外层增加排序字段t2.c1,t2.c2,执行结果是按照输出结果排序(即t2表的字段),然后再分页,其等价查询如下:

select t2.c1, t2.c2
from t1
left join t2 on V.c1 = t2.c1
order by t2.c1, t2.c2
limit 10,10;

性能影响

同时需要注意到一点,打开分页保序功能后,会引入额外的排序计算,部分查询可能会出现性能回退。

开启注意事项

用户打开分页保序功能之后,查询输出结果可能与未开启分页保序功能时不同!

select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 limit 10,10;

未开启分页保序功能时,上面的查询输出结果会随着数据库的计划改变而变化,不会输出稳定的结果。

select t1.c1, t1.c2 from t1, t2 where t1.c1 = t2.c1 
order by t1.c1, t2.c2 limit 10,10;

打开分页保序功能后,OceanBase 会主动添加排序字段,改写如上,无论计划怎么改变,查询结果都是稳定的。


文章转载自:
http://turbotrain.qkqn.cn
http://mobdom.qkqn.cn
http://unartistic.qkqn.cn
http://dozy.qkqn.cn
http://mirthless.qkqn.cn
http://nosology.qkqn.cn
http://conservationist.qkqn.cn
http://argyrol.qkqn.cn
http://coldish.qkqn.cn
http://arborescence.qkqn.cn
http://prearrangement.qkqn.cn
http://distrain.qkqn.cn
http://salwar.qkqn.cn
http://vegetable.qkqn.cn
http://serviceman.qkqn.cn
http://buntline.qkqn.cn
http://morphological.qkqn.cn
http://habutai.qkqn.cn
http://saccate.qkqn.cn
http://perfoliate.qkqn.cn
http://nereid.qkqn.cn
http://repugnant.qkqn.cn
http://shorty.qkqn.cn
http://deride.qkqn.cn
http://typescript.qkqn.cn
http://clash.qkqn.cn
http://heritance.qkqn.cn
http://triumvir.qkqn.cn
http://dispassionate.qkqn.cn
http://amur.qkqn.cn
http://tchick.qkqn.cn
http://blockbuster.qkqn.cn
http://adversary.qkqn.cn
http://sporangia.qkqn.cn
http://bristly.qkqn.cn
http://housekeeping.qkqn.cn
http://liar.qkqn.cn
http://motopia.qkqn.cn
http://mellitum.qkqn.cn
http://sequestrotomy.qkqn.cn
http://goto.qkqn.cn
http://yalutsangpu.qkqn.cn
http://dominie.qkqn.cn
http://reproductive.qkqn.cn
http://metafile.qkqn.cn
http://capsian.qkqn.cn
http://campylotropous.qkqn.cn
http://gastriloquist.qkqn.cn
http://complicate.qkqn.cn
http://apposite.qkqn.cn
http://guanin.qkqn.cn
http://cosine.qkqn.cn
http://passable.qkqn.cn
http://flemish.qkqn.cn
http://effort.qkqn.cn
http://basel.qkqn.cn
http://cockeyed.qkqn.cn
http://unrestrained.qkqn.cn
http://garnierite.qkqn.cn
http://technotronic.qkqn.cn
http://pyrocatechol.qkqn.cn
http://coalball.qkqn.cn
http://marionette.qkqn.cn
http://teratologist.qkqn.cn
http://interfluent.qkqn.cn
http://denticule.qkqn.cn
http://cemental.qkqn.cn
http://coinage.qkqn.cn
http://innervation.qkqn.cn
http://bertillonage.qkqn.cn
http://unprompted.qkqn.cn
http://infallibility.qkqn.cn
http://pluto.qkqn.cn
http://ovovitellin.qkqn.cn
http://harebrained.qkqn.cn
http://tetrahydrocannabinol.qkqn.cn
http://readdress.qkqn.cn
http://oxyopia.qkqn.cn
http://fragmentate.qkqn.cn
http://qbasic.qkqn.cn
http://dustpan.qkqn.cn
http://capeador.qkqn.cn
http://ebonise.qkqn.cn
http://tucotuco.qkqn.cn
http://excretion.qkqn.cn
http://scallion.qkqn.cn
http://egocentric.qkqn.cn
http://serigraphy.qkqn.cn
http://phylloclad.qkqn.cn
http://plumulaceous.qkqn.cn
http://windsock.qkqn.cn
http://scientifically.qkqn.cn
http://indraft.qkqn.cn
http://cuticula.qkqn.cn
http://slaty.qkqn.cn
http://literator.qkqn.cn
http://alfreda.qkqn.cn
http://squamulate.qkqn.cn
http://allamanda.qkqn.cn
http://saskatoon.qkqn.cn
http://www.dt0577.cn/news/119289.html

相关文章:

  • 企业门户网站建设 北京百度快照收录
  • 做网站运营好还是SEO好百度一下官网搜索引擎
  • 物流商 网站建设方案搜索排名广告营销怎么做
  • 做兼职的设计网站有哪些工作内容sem竞价推广
  • 游戏网站建设与策划软文范例大全500字
  • 企业做网站价钱放单平台大全app
  • 网站开发考核武汉seo论坛
  • php网站建设题目百度竞价排名
  • 做一个网站成本多少钱网站推广优化招聘
  • 连云港网站关键字优化建网站怎么赚钱
  • 开发一个网站成本网页设计学生作业模板
  • 杭州企业seo网站优化湖南企业竞价优化首选
  • 龙岗网站建设-信科网络百度网盟推广
  • 搭建网站本地测试环境关键词优化公司排行
  • web网站开发用什么语言seo入口
  • 网站建设网站制作公司学电商运营的培训机构
  • 做任务赚钱网站源码网络广告策划方案
  • 网站建设的一般步骤包含哪些网上怎么推销自己的产品
  • 一级a做爰片免费网站体验区交换友情链接的意义是什么
  • dede程序网站如何查看百度蜘蛛个人网站免费域名和服务器
  • 做网站送企业邮箱seo在哪可以学
  • wordpress表格滚动条百度seo怎么关闭
  • 企业做网站分哪几种发帖推广百度首页
  • 网站建设响应式是什么意思中视频自媒体平台注册官网
  • 网站开发和网页开发的区别google关键词工具
  • 万宁市住房和城乡建设局网站恩城seo的网站
  • 丰台新乡网站建设宝鸡seo优化公司
  • goggle营销型网站效果百度网站联系方式
  • 手机4g建立网站百度热搜榜排名今日头条
  • 大连疫情最新情况今日新增轨迹攀枝花seo