创建物化视图commit_oracle慎用基于on commit刷新物化视图的方式(一)

oracle慎用基于on commit刷新物化视图的方式(一)

背景

上周五,也就是2020-08-07那天快下班的时候,突然发生一件事。客户反馈xxxx平台登录不上去,当时一开始没意识到是数据库导致的问题。

业务人员在那怀疑这里那里,还是网络ip哪里地区又被封了。后来都排除没发生什么问题,还想着重启Nginx服务器(我也不懂)。

但是维护Nginx的人员刚好请假了。

刚好当时大概是这个事情发生的半个小时之前,监控邮件报出如下错误,

当时以为只是归档目录快满了,简单的备份了下归档,清理掉多余的归档。

排查

问题出现后,虽然没怀疑到数据库的问题,不过我也还是看了一眼数据库。

发现警告日志闪回恢复区有在报使用率超标的问题,有问题,绝对有问题。

除了归档量暴增的问题和刚搭建起来没多久的备库归档也爆掉的问题,没发现其他的报错。

先看看日志切换的频率,和平时同一时段相比,这归档多了100多倍。

让我一度怀疑是应用出现了什么问题导致dml操作剧增导致的。

SELECT TO_CHAR(FIRST_TIME,'YYYY-MM-DD') DAY,

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'00',1,0)),'999') "00",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'01',1,0)),'999') "01",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'02',1,0)),'999') "02",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'03',1,0)),'999') "03",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'04',1,0)),'999') "04",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'05',1,0)),'999') "05",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'06',1,0)),'999') "06",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'07',1,0)),'999') "07",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'08',1,0)),'999') "08",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'09',1,0)),'999') "09",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'10',1,0)),'999') "10",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'11',1,0)),'999') "11",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'12',1,0)),'999') "12",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'13',1,0)),'999') "13",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'14',1,0)),'999') "14",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'15',1,0)),'999') "15",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'16',1,0)),'999') "16",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'17',1,0)),'999') "17",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'18',1,0)),'999') "18",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'19',1,0)),'999') "19",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'20',1,0)),'999') "20",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'21',1,0)),'999') "21",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'22',1,0)),'999') "22",

TO_CHAR(SUM(DECODE(TO_CHAR(FIRST_TIME,'HH24'),'23',1,0)),'999') "23"FROMV$LOG_HISTORYGROUP BY TO_CHAR(FIRST_TIME,'YYYY-MM-DD')ORDER BY 1 DESC;

View Code

这个时候我需要定位找出是哪条SQL或者哪些SQL引起的问题。

通过如下语句,可以找出哪些对象有大量数据块变化情况,

SELECT TO_CHAR(BEGIN_INTERVAL_TIME, 'YYYY-MM-DD HH24') SNAP_TIME,

DHSO.OBJECT_NAME,SUM(DB_BLOCK_CHANGES_DELTA) BLOCK_CHANGEDFROMDBA_HIST_SEG_STAT DHSS,

DBA_HIST_SEG_STAT_OBJ DHSO,

DBA_HIST_SNAPSHOT DHSWHERE DHS.SNAP_ID =DHSS.SNAP_IDAND DHS.INSTANCE_NUMBER =DHSS.INSTANCE_NUMBERAND DHSS.OBJ# =DHSO.OBJ#AND DHSS.DATAOBJ# =DHSO.DATAOBJ#AND BEGIN_INTERVAL_TIME BETWEEN TO_DATE('2020-08-07 16:00','YYYY-MM-DD HH24:MI')ANDTO_DATE('2020-08-07 17:30', 'YYYY-MM-DD HH24:MI')GROUP BY TO_CHAR(BEGIN_INTERVAL_TIME, 'YYYY-MM-DD HH24'),

DHSO.OBJECT_NAME

HAVING SUM(DB_BLOCK_CHANGES_DELTA) > 0

ORDER BY SUM(DB_BLOCK_CHANGES_DELTA) asc;

View Code

部分关键结果如下,

SNAP_TIME |OBJECT_NAME |BLOCK_CHANGED---------------------------------------|------------------------------|-------------

............. |.............. |......2020-08-07 16 |.............. | 100480

2020-08-07 16 |.............. | 129184

2020-08-07 16 |.............. | 137024

2020-08-07 17 |.............. | 143520

2020-08-07 17 |.............. | 145440

2020-08-07 16 |.............. | 228624

2020-08-07 16 |.............. | 256704

2020-08-07 17 |.............. | 548336

2020-08-07 17 |.............. | 55019536

2020-08-07 17 |.............. | 103429408

2020-08-07 16 |T_XXXXXXXXXX_INFO | 103997488

2020-08-07 16 |PK_X_XXXXXX_XXXX | 195532752

210rows selected.

Elapsed:00:00:02.29

在2020-08-07 16点内,有两个对象的块变化是最多的,分别是

T_XXXXXXXXXX_INFO

PK_X_XXXXXX_XXXX

PK_X_XXXXXX_XXXX很容易就可以查出,这是一个主键索引,对应的表名为X_XXXXXX_XXXX。

赶紧取问题时间段的awr报告,看看是否存在相关的X_XXXXXX_XXXX以及T_XXXXXXXXXX_INFO的sql,顺便也看看等待事件。

结果一眼就看出等待事件存在问题,

EventWaitsTotal Wait Time (sec)Wait Avg(ms)% DB timeWait Class

enq: TX - row lock contention

683

223.1K

326667

39.0

Application

gc buffer busy acquire

10,048

163.8K

16302

28.6

Cluster

enq: JI - contention

23,034

112.7K

4892

19.7

Other

buffer busy waits

1,770

20.9K

11784

3.6

Concurrency

DB CPU

20K

3.5

enq: TX - index contention

591

6630.2

11219

1.2

Concurrency

log file switch (checkpoint incomplete)

481

6268.1

13031

1.1

Configuration

db file scattered read

482,552

4536

9

.8

User I/O

gc current block busy

10,845

3853.8

355

.7

Cluster

direct path read

832,639

3170

4

.6

User I/O

这个系统平时没有存在那么高的TX锁等待,赶紧看看哪个段的行锁等待比较严重,

Segments by Row Lock Waits

OwnerTablespace NameObject NameSubobject NameObj. TypeRow Lock Waits% of Capture

ABCD_EFG

ABCD

X_XXXXXX_XXXX

TABLE

681

53.71

ABCD_XXXXXXXXS

DYCK_FILETRANS

PK_XXXX_XXXXXXXX_TMP

INDEX

321

25.32

刚好和前边块变化最多的对象是同一个,也可以看看块变化,

Segments by DB Blocks Changes

OwnerTablespace NameObject NameSubobject NameObj. TypeDB Block Changes% of Capture

XXXXX_DATA

USERS

PK_X_XXXXXX_XXXX

INDEX

161,129,664

64.72

XXXXX_DATA

USERS

T_XXXXXXXXXX_INFO

TABLE

85,726,272

34.43

都对的上!!!

这个时候在从awr中找找含有X_XXXXXX_XXXX表的SQL,

Elapsed Time (s)ExecutionsElapsed Time per Exec (s)%Total%CPU%IOSQL IdSQL ModuleSQL Text

226,451.96

1,075

210.65

39.58

0.01

0.00

JDBC Thin Client

update X_XXXXXX_XXXX set ID=:1...

166,564.13

1,368

121.76

29.12

0.14

0.00

JDBC Thin Client

......................

20,730.38

294

70.51

3.62

0.01

0.03

JDBC Thin Client

......................

5,395.58

0

0.94

5.25

94.88

......................

5,395.54

7

770.79

0.94

5.25

94.88

......................

5,205.90

38

137.00

0.91

40.58

58.45

xxxxxxxxx.exe

......................

4,619.25

17,384

0.27

0.81

0.05

0.08

xxxxxxxxxxxxxxxxxx.exe

......................

4,231.15

1

4,231.15

0.74

99.72

0.09

xxxxxxxxxxx.exe

......................

4,049.48

47,215

0.09

0.71

0.14

0.20

xxxxxxxxxxxxxxxxxx.exe

......................

2,707.50

1

2,707.50

0.47

99.87

0.10

xxxx.exe

......................

set lines 150 pages 150col BEGIN_INTERVAL_TIMEfora23

col PLAN_HASH_VALUEfor 9999999999col date_timefora30

col snap_id heading'SnapId'col executions_delta heading "No.of exec"

col sql_profile heading "SQL|Profile" fora7

col date_time heading'Date time'col avg_lio heading'LIO/exec' for 99999999999.99col avg_cputime heading'CPUTIM/exec' for 9999999.99col avg_etime heading'ETIME/exec' for 9999999.99col avg_pio heading'PIO/exec' for 9999999.99col avg_row heading'ROWs/exec' for 9999999.99

SELECT distincts.snap_id ,

PLAN_HASH_VALUE,

to_char(s.BEGIN_INTERVAL_TIME,'yyyy-mm-dd hh24:mi:ss')|| to_char(s.END_INTERVAL_TIME,'-hh24:mi:ss') Date_Time,

SQL.executions_delta,

SQL.buffer_gets_delta/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_lio,--SQL.ccwait_delta,

(SQL.cpu_time_delta/1000000)/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_cputime ,

(SQL.elapsed_time_delta/1000000)/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_etime,

SQL.DISK_READS_DELTA/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_pio,

SQL.rows_processed_total/decode(nvl(SQL.executions_delta,0),0,1,SQL.executions_delta) avg_row--,SQL.sql_profile

FROMdba_hist_sqlstat SQL,

dba_hist_snapshot sWHERESQL.instance_number=(select instance_number fromv$instance)and SQL.dbid =(select dbid from v$database)and s.snap_id =SQL.snap_idAND sql_id in('&SQLID') order bys.snap_id/

View Code

结果如下,

SnapId|PLAN_HASH_VALUE|Date time |No. of exec| LIO/exec|CPUTIM/exec| ETIME/exec| PIO/exec| ROWs/exec

----------|---------------|------------------------------|-----------|---------------|-----------|-----------|-----------|-----------

16581| 2297901584|2020-08-07 13:30:02-14:00:09 | 370| 4.04| .00| .00| .00| 5547.76

16583| 2297901584|2020-08-07 14:30:16-15:00:24 | 563| 4.02| .00| .00| .00| 3648.02

16584| 2297901584|2020-08-07 15:00:24-15:30:31 | 567| 4.03| .00| .00| .00| 3623.28

16585| 2297901584|2020-08-07 15:30:31-16:00:39 | 442| 4.05| .00| .00| .00| 4648.97

16586| 2297901584|2020-08-07 16:00:39-16:30:47 | 429| 4.28| .00| .59| .01| 4790.84

16587| 2297901584|2020-08-07 16:30:47-17:01:31 | 366| 5.72| .06| 169.81| .07| 5616.50

16587| 2297901584|2020-08-07 16:30:47-17:07:50 | 366| 5.72| .06| 169.81| .07| 5616.50

16588| 2297901584|2020-08-07 17:01:31-17:30:32 | 278| 15.70| .03| 423.38| .15| 7395.38

16588| 2297901584|2020-08-07 17:07:50-17:30:32 | 278| 15.70| .03| 423.38| .15| 7395.38

16589| 2297901584|2020-08-07 17:30:32-18:00:41 | 369| 31.79| .07| 1180.75| .00| 5572.59

16590| 2297901584|2020-08-07 18:00:41-18:30:51 | 535| 44.85| .06| 909.64| .00| 3844.53

16591| 2297901584|2020-08-07 18:30:51-19:00:00 | 201| 55.29| .01| 192.97| .00| 10233.94

16592| 2297901584|2020-08-07 19:00:00-19:30:08 | 26| 4.69| .00| 1.26| .00| 79117.23

从8月7日下午1点开始可以查询到记录,一直在下午4点半后开始,sql执行时间急剧增加,但是执行计划确是并没有变化过。

并且从执行次数看,并没有多太过于剧烈的波动。

到这里目前似乎没有什么好办法可以自己追查下去,能确定的是出问题的SQL语句就是95nn49n57dqza,由于update引起大量的TX锁等待,导致xxxx平台登录不上去或者响应很久才出现页面。

而TX锁严重的原因就是一次update的时间从不到1s变到几百s甚至上千s。

这里存在一个问题,便是在看了awr发现tx锁严重,再到确定SQL的过程,由于重心太过明确导致忽略掉了一开始找出哪些对象有大量数据块变化情况那里,除了PK_X_XXXXXX_XXXX外其实还有另外一个对象T_XXXXXXXXXX_INFO。

暂且忽略T_XXXXXXXXXX_INFO顺着一直下去的思路的话,单纯从视图间的关联貌似已经无法继续下去,可以选择在数据库级别做一次ssd,或者10046。

推荐10046,从结果反推回去,10046是可以看出会话除了有执行95nn49n57dqza之外,也是有对T_XXXXXXXXXX_INFO表做insert的操作的。

因为第一时间发现95nn49n57dqza的问题,立马问了业务人员之后,他们有反馈在4点左右有创建一张物化视图T_XXXXXXXXXX_INFO,基表就是X_XXXXXX_XXXX。因此没做10046。

看了创建语句,用了on commit。大致找了下资料,基本确定是这个引起的。当即决定删除这个物化视图。

18:54:45 SYS@dyckdb1(2194)> drop MATERIALIZED VIEWMACRO_DATA.T_ENTERPRISE_INFO;drop MATERIALIZED VIEWMACRO_DATA.T_ENTERPRISE_INFO*ERROR at line1:

ORA-04021: timeout occurred while waiting tolock object

Elapsed:00:00:49.05

--撤销授权操作,不然物化视图删不掉

18:57:45 SYS@dyckdb2(1269)> revoke select on dyck_pub.t_client_info fromMACRO_DATA;^Crevoke select on dyck_pub.t_client_info fromMACRO_DATA*ERROR at line1:

ORA-01013: user requested cancel of currentoperation

Elapsed:00:02:49.57

19:02:04 SYS@dyckdb2(1269)> /

Revokesucceeded.

Elapsed:00:00:09.58

19:02:46 SYS@dyckdb1(2194)> drop MATERIALIZED VIEWMACRO_DATA.T_ENTERPRISE_INFO;

Materializedviewdropped.

Elapsed:00:00:03.82

删除视图,问题解决。

这里提供另外一个查找产生指定时间段内产生redo最多的SQL做参考:

SELECT TO_CHAR(BEGIN_INTERVAL_TIME,'YYYY_MM_DD HH24') WHEN,

DBMS_LOB.SUBSTR(SQL_TEXT,4000,1) SQL,

DHSS.INSTANCE_NUMBER INST_ID,

DHSS.SQL_ID,

EXECUTIONS_DELTA EXEC_DELTA,

ROWS_PROCESSED_DELTA ROWS_PROC_DELTAFROMDBA_HIST_SQLSTAT DHSS,

DBA_HIST_SNAPSHOT DHS,

DBA_HIST_SQLTEXT DHSTWHERE UPPER(DHST.SQL_TEXT) LIKE '%T_CLIENT_INFO%'

AND LTRIM(UPPER(DHST.SQL_TEXT)) NOT LIKE 'SELECT%'

AND DHSS.SNAP_ID=DHS.SNAP_IDAND DHSS.INSTANCE_NUMBER=DHS.INSTANCE_NUMBERAND DHSS.SQL_ID=DHST.SQL_IDAND BEGIN_INTERVAL_TIME BETWEEN TO_DATE('2020-08-07 16:00','YYYY-MM-DD HH24:MI')AND TO_DATE('2020-08-07 17:00','YYYY-MM-DD HH24:MI')order by exec_delta;

View Code

通过上边的语句查找是可以发现update基表和insert物化视图的SQL语句的。

接下来可以通过模拟on commit对update影响有多大,顺便看看是否由于物化视图关系是否导致redo量激增。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/559854.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

lte核心网由哪些设备组成_电气设备安装工程由哪些部分组成?

电气设备安装工程的组成通用电气设备安装项目是一个工程系统,通过接收电能,转换和分配电能,使用电能或从接收电能到分配给电气设备组成。根据其主要功能,它们分为电气照明系统,电源系统和配电系统。这种主要基于电能的…

guid主分区表损坏怎么办_抹盘提示进程失败,导致Win 10无法正常开机怎么办?...

点击上方「蓝字」关注我哦一般来说,ESP分区不足200MB会导致抹盘进程失败,并且损坏Win 10引导,需要进入PE模式将其修复。本教程所使用的PE为WePE。0、条件电脑进入PE系统。1、开始找到桌面上的“Dism”打开运行。打开程序后可能会提示临时目录…

bundle 安装_超级小白使用pip安装第三方库的正确姿势

为了感谢大家对“Python客栈”的关注与支持,即日起,我们每天会在留言中随机抽取三位粉丝发放6.6元小红包。快来参与吧!11.pip是什么pip是python的包管理工具,python2.7/python3.4以上的版本都已经集成了该工具,我们可以…

arcgis js 地图打印_Arcgis在国土空间规划编制中的应用

规划行业经过多年的转变,从原来的城市规划到现在的国土空间规划,理论和技术应用都随之更新。新的国土空间规划在编制成果上,注重建立全国同一的国土空间基础信息平台。目前,单就国土空间规划的编制而言,已从传统规划的…

.network 中文文档_以太坊链下支付网络Raiden API中文文档

雷电网络(Raiden Network)是以太坊区块链的链下扩容方案,Raiden节点的Restful API官方文档中文版由汇智网提供,访问地址:http://cw.hubwiz.com/card/c/raiden-api/Raiden API访问端结点URL中通常包含有版本信息,以便支持对不同版本…

php utc时间_PHP转换UNIX时间戳 UTC时间(TZ格式) 标准时间的方法 UNIX UTC GMT时间、本地时间互转...

在PHP编程中经常会遇到各种不同格式的时间比如:unix时间戳:1547740800UTC时间:2019-1-18T00:00:00Z标准时间:2019-1-18 00:00:00以上这三个时间格式表示的都是2019年1月18日的零点零分零秒 那PHP中怎么转换这三个时间格式呢,这里教…

python write 写多行_如何用 Python 执行单行命令

一般来说,面对日常处理的一些小任务,直接用 sed,grep 之类的就可以搞定,更复杂一点的就会考虑 awk 或者用一些现成的轮子,要是 awk 搞不定我就只好用 Python 了。但有些时候,我仅仅只是想写一个一次性脚本,…

小红书点赞收藏有什么用_橱柜门用什么材料好?老师傅开口说话了!听进去算你的,收藏备用...

想做好一个橱柜,橱柜门的材质要选好,而一旦涉及到材质,那些专业生僻的叫法让人眼花缭乱,云里雾里的,难以理解。其实橱柜门的材质大概分为6大类,市面上主流的材质大致有3类。今天FUN姐就跟大家聊聊橱柜门到底…

ddr4服务器内存和普通内存_服务器内存介绍及其供电规范

内存(Memory)也称内存储器或主存储器,与CPU进行高速的数据沟通,用于暂时存放CPU的运算数据。见上图,内存紧挨CPU两侧布局,内存数量和容量根据系统需求和CPU能力决定,内存性能对服务器整体运行快慢起着至关重要的影响。…

小程序新闻列表页面布局代码_论坛小程序·“我的”页面布局

这次让我们来看看界面是怎么布局的吧!比如打开模拟器里“我的”页面,找到其所对应的me文件夹里的文件打开me.wxml查看第一段代码,发现其中包含五个view类,他们的属性标签分别是:classamountBg、classimg、classaccount…

准考证打印系统关闭怎么办_2019年执业药师准考证无法正常打印,怎么办?

2019年各地区执业药师准考证打印入口陆续开通,但是很多考生会遇到准考证打印的问题,现小编整理了2019年执业药师准考证无法正常打印情况,供各位考生参考。一、打印准考证必须使用IE浏览器6.0或以上版本。二、禁用或卸载有关拦截工具。(Window…

安卓机更新系统会卡吗_安卓机可以用AirPods Pro吗?告诉你真实体验

[PConline评测]安卓系统可以使用AirPods Pro吗?从AirPods Pro发布起,这问题一直备受关注,毕竟苹果官方宣称AirPods Pro兼容多种苹果设备,可没说兼容安卓机。我们知道其他AirPods产品是可以用在安卓机上的,那么AirPods …

# 解析bt文件_BT、磁力链这些词语是什么意思?

“知其然知其所以然”。我们经常在下载资料的时候能看到BT、磁力链等词语,这些词语到底是什么意思呢?下载都会用,但是你了解吗?BT下载传统的下载模式是每个客户端从服务器拷贝文件,跟校园内常用的FTP一样。因为服务器宽…

vue添加html开启服务器_Vue 项目(HTML5 History 模式) 部署服务器

相信很多小伙伴在用Vue-cli安装的脚手架开发的时候,在开发环境中项目可以很正常的运行,但是进入到生产环境,编译打包后,放入服务器,项目就不正常了,会出现空白页或者路由跳转404等问题。遇到这些问题不要慌…

广数系统u盘支持什么格式_u盘装系统,u盘要格式化成什么格式

展开全部分析如下:1、将u盘制作成u深度u盘启动盘,重启电脑等待出现32313133353236313431303231363533e78988e69d8331333365666237开机画面按下启动快捷键,选择u盘启动进入到u深度主菜单,选取“【02】U深度WIN8 PE标准版(新机器)”…

asp 可否压缩_怎样用ASP压缩文件

多数的时候我们需要压缩文件,保存到特定的位置,或者你可以使用它实现所有你想要的效果。我们需要服务器支持WScript.Shell-多数的站长都不会允许这样的。这里你可以获取下载链接,在下载这个文件之前你可以要么指定相对的路径或者是绝对的路径…

怎么修改ppt的虚线间隔_还有一小时下班,领导交给我一份ppt,做不完不许走!...

相信在职场中的好多人,都会遇到领导突然给任务的时候,遇到这种情况该怎么办呢?还能怎么办?听话!干活!就是这份ppt,就是它,决定了我的下班时间!ppt水平差,时间…

kitti pkl可视化_KITTI 3D Lidar 数据可视化

前言Lilikili:在尝试做Lidar方面的研究的时候,发现对于可视化大家的脑洞还不是很够,所以提供一些思路让大家蛤一下。数据集本次使用的数据集是KITTI 3D object detection条目下面的data_object_velodyne.zip,里面存储了二进制存储…

php mysql 排名_mysql中如何实现排名

mysql中实现排名的方法:使用demo函数,语法为【SELECT banji,avg(score) as AvgS FROM table_test GROUP BY banji ORDER BY AvgS DESC】。mysql中实现排名的方法:可用Demo实现注意里面的A,属于嵌套查询,所以排名会正确…

mysql三表where查询_mysql三表查询sql语句

表结构:Student学生表(学号、姓名、性别、年龄、编辑)Course课程表(编号、课程名称)sc选课表(选课编号、学号、课程编号、成绩)(1)写一个SQL语句,查询选修了“计算机原理”的学生学号和姓名(2)写一个SQL语句,查询“小明”同学选修的课程名称(…