首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【DB笔试面试643】Oracle,如何查询索引的历史统计信息

♣ 题目部分 Oracle,如何查询索引的历史统计信息?...♣ 答案部分 Oracle 10g开始,当收集的统计信息的时候,旧的统计数据被保留,如果因为新的统计信息而出现性能问题,旧的统计信息就可以被恢复。...历史统计信息保存在以下几张: l WRI$_OPTSTAT_TAB_HISTORY 的统计信息 l WRI$_OPTSTAT_IND_HISTORY 索引的统计信息 l WRI$_OPTSTAT_HISTHEAD_HISTORY...列的统计信息 l WRI$_OPTSTAT_HISTGRM_HISTORY 直方图的信息 视图DBA_TAB_STATS_HISTORY可以查询历史收集统计信息的时间,但是不能查询到行数,所以需要结合基来查询...这些统计信息SYSAUX空间中占有额外的存储开销,所以应该注意并防止统计信息空间填满。

2.3K20

使用ADOSQLExcel工作执行查询操作

学习Excel技术,关注微信公众号: excelperfect 我们可以将存储数据的工作当作数据库,使用ADO技术,结合SQL查询语句,可以工作获取满足指定条件的数据。...VBE,单击菜单“工具——引用”,“引用”对话框,找到并选取“Microsoft ActiveX Data Objects 6.1 Library”,如下图1所示。 ?...图1 下面,需要将工作Sheet2的数据物品为“苹果”的数据行复制到工作Sheet3,如下图2所示。 ?...SQL查询语句为: query = "Select * from [" & wksData.Name _ & "$] Where 物品='苹果' " 工作wksData查询物品为“苹果”的记录...图3 关于ADO对象模型及其属性方法的应用,以及SQL查询语句语法,有兴趣的朋友可以参考相关资料进一步了解。

4.4K20
您找到你想要的搜索结果了吗?
是的
没有找到

值参数

值参数是使用用户定义的类型来声明的。 使用值参数,可以不必创建临时或许多参数,即可向 Transact-SQL 语句或例程(如存储过程或函数)发送多行数据。...示例: 下面的示例使用 Transact-SQL 并展示了如何执行以下操作: 创建值参数类型,声明变量来引用它,填充参数列表,然后将值传递到 AdventureWorks 数据库的存储过程。...BULK INSERT 操作 值参数的使用方法与其他基于数据集的变量的使用方法相似;但是,频繁使用值参数将比大型数据集要快。...大容量操作的启动开销比值参数大,与之相比,值参数插入数目少于 1000 的行时具有很好的执行性能。 重用的值参数可从临时缓存受益。...这一表缓存功能可比对等的 BULK INSERT 操作提供更好的伸缩性。 使用小型行插入操作时,可以通过使用参数列表或批量语句(而不是 BULK INSERT 操作或值参数)来获得小的性能改进。

30720

SQL自连接vs非自连接

SQL自连接非自连接是SQL查询中经常使用的两种方法,用于将同一表的不同行进行比较或匹配。自连接自连接是指在同一表中进行连接操作,也就是将同一表的不同行作为两个不同的进行连接。...自连接通常用于查找一表相关联的行。例如,假设有一个表格“员工”,其中包含员工的姓名、上级、工资等信息。现在需要查询每个员工的上级姓名,就可以使用自连接来完成。...WHERE子句中,通过将a的“上级”字段与b的“员工号”字段进行匹配,来获取每个员工的上级姓名。另一个常见的自连接场景是查询同一表的数据,但是需要使用不同的过滤条件。...WHERE子句中,通过将a的“客户ID”字段与b的“客户ID”字段进行匹配,并将a的“订单日期”字段与b的“订单日期”字段进行比较,来获取同一客户不同时间的订单数量。...非自连接通常用于从不同的表格获取关联的数据。例如,假设有一个“订单”表格一个“客户”表格,其中订单表格包含订单的编号、客户ID、订单日期等信息,客户表格包含客户的ID、姓名、地址等信息

1.2K30

Mysql详解

当达到页面的最大填充因子时候(innodb默认的最大填充因子是页大小的15/16,会留出1/16的空间留作以后的修改),下一条记录就会写入新的页; 【2】数据按照顺序方式加载,主键页就会近乎于顺序的记录填满...2)图示 Mysql的锁机制 【1】锁分类 1)性能上分为乐观锁(用版本对比来实现)悲观锁 2)对数据操作的粒度分,分为行锁 3)对数据库操作的类型分,分为读锁写锁(都属于悲观锁),还有意向锁...当前session其他session都可以读该 当前session插入或者更新锁定的都会报错,其他session插入或更新则会等待 //如果加了写锁 当前session对该的增删改查都没有问题...,其他session对该的所有操作被阻塞 【3.1.2】总结 1、对MyISAM的读操作(加读锁) ,不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求。...2、对MylSAM的写操作(加写锁) ,会阻塞其他进程对同一表的读写操作,只有当写锁释放后,才会执行其它进程的读写操作 【3.2】行锁:每次操作锁住一行数据。

45620

一次sql注入引发的多个mysql进程锁住的问题(针对myisam)

以前碰到过一个sql注入式攻击引发大量mysql进程被锁住的例子,现在分享给大家。当时数据用的是myisam存储引擎。...对MyISAM的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对MyISAM的写操作,则会阻塞其他用户对同一表的读写操作;MyISAM的读操作与写操作之间,以及写操作之间是串行的...一直执行,但是读操作不会阻塞其他用户对同一个的读请求因此执行另一条select后会立刻返回执行结果: ?...读操作会阻塞对同一表的写请求,而写操作会阻塞其他用户对同一表的读写操作,因此在这里后续的updateselect语句都因为id=8的那个process而一直处于等待状态,无法返回结果。...我们kill掉那条被注入的sql执行进程,锁立刻释放,后续的sql立刻返回结果。 ?

1K80

MySQL not exists 真的不走索引么?

执行计划来看,两个都使用了索引,区别在于NOT EXISTS使用“DEPENDENT SUBQUERY”方式,而LEFT JOIN使用普通关联的方式。 推荐看下:为什么索引能提高查询速度?...执行过程来看,LEFT JOIN方式的主要消耗Sending data一项上(1.2s),而NOT EXISTS方式主要消耗executeingSending data两项上,受限于Profiling...Profiling只能看到47个” executeingSending data”的组合项(每个组合项约50us),通过执行计划看出,外表t_monitor的数据量为578436行,忽略统计信息不准情况下...当外层程勋结果集的数据量N较大甚至上千万数据量时,NOT EXISTS的查询性能会变得非常糟糕,甚至会大量消耗服务器IOCPU资源从而影响其他业务正常运行。...除上述问题外,优化过程中发现本应该存储相同数据的resource_id列两个定义不同,一表为VARCHAR而另外一表为BIGINT,外部结果集的字段类型NOT EXIST字表字段类型不同导致

2.3K40

Data Access 之 MyBatis Plus(五)- 自定义 BaseMapper

SQL语句 创建一个XxxInjector类继承DefaultInjector,重写getMethodList()方法,该方法中将包含了自定义SQL语句的类的实例化对象添加到methodList 配置文件通过...首先在t_tesla增加logic_flag字段,并设置所有记录的logic_flag值为0,表示未删除;接着Tesla实体类增加logicFlag属性以及响应的getter/setter方法,并该字段属性上增加...--配置统一表名前缀--> <property name="logicDeleteField" value...; FieldFill是一个枚举类,共有四种枚举值 起始就是设置删除或者更新时进行自动填充或者默认或者删除更新时都进行自动填充 2....自定义公共字段填充处理器 自定义的公共字段填充器需要实现MetaObjectHandler接口,并实现两个方法,既执行INSERTUPDATE是自动填充的字段字段值 public class TeslaMetaObjectHandler

1.4K20

数据库应用技术系列第一讲 创建数据库

日期时间类型 日期时间类型数据用于存储日期时间信息,日期时间数据类型包括date、time、datetime2datetimeoffset。...(5)datetime2:也用于存储日期时间信息。...(6)datetimeoffset:也用于存储日期时间信息,取值范围与datetime2类型相同。...4 计算列 计算列由可以使用同一表的其它列的表达式计算得来。 该表达式可以是非计算列的列名、常量、函数、变量, 也可以是用一个或多个运算符连接的这些元素的任意组合。..., Triggers, Procedures, CREATE TABLE的全部列级级约束 6 创建域完整性 (1)CHECK约束的定义与删除 界面方式创建与删除CHECK约束 例如,pxscj

1.5K20

【干货】一线互联网公司必问的MySQL锁与事务

预计阅读时间:6分钟 之前多篇文章mysql的底层结构分析、sql语句的分析器以及sql从优化底层分析, 还有工作中常用的sql优化小知识点。...锁分类 性能上分为乐观锁悲观锁 数据库操作的类型分为读锁写锁 读锁:针对同一份数据,多个读操作可以同时进行而不会互相影响 写锁:当前写操作没有完成前,它会阻断其他写锁读锁 对数据的操作粒度分为行锁...show open tables; --删除锁 unlock tables; 加读锁 lock table 名 read; 当前session其他session都可以读该;当前session插入或者更新锁定的都会报错...对MyISAM的读操作(加读锁),不会阻碍其他进程对同一表的读请求,但会阻碍对同一表的写请求。只有当读锁释放后,才会执行其他操作的写操作。...对MyISAM的写操作(加写锁),会阻塞其他进程对同一表的读写操作,只有当写锁释放后,才会执行其他进程的读写操作。 行锁 每次总锁住一行数据。

53620

看了这篇MySQL,开发功力再升级

这种时候就要使用到事务,我们要先从库存取出物品数量,然后生成订单,付款成功后生成付款信息,再更新商品数量。这个流程,我们需要使用到锁对有限的资源进行保护,解决隔离并发问题。...释放锁 unlock tables; 读锁说明: 新建两个session会话,session1 session2 此时session1对mylock进行read 锁定,情况如下: session1...可以查询该信息,session2也可以查询该的记录 session1不能查询其他没有锁定的,session2可以查询更新其它没有锁定的 session1插入或更新锁定的都会提示错误,session2...锁类型 他人可读 他人可写 读锁 是 否 写锁 否 否 1、 对MyISAM的读操作(加读锁),不会阻塞其他进程对同一表的读请求,但会阻塞对同一表的写请求,只有当读锁释放后,才会执行其他进程的写操作...2、 对MyISAM的写操作(加写锁),会阻塞其他线程对同一表的读写操作,只用当写锁释放后,才会执行其他进程的读写操作。 总结:读锁会阻塞写,但是不会阻塞读。

33330

全面了解mysql锁机制(InnoDB)与问题排查

加锁可以保证事务的一致性,可谓是有人(锁)的地方,就有江湖(事务) MyISAM不适合高并发 共享读锁 对MyISAM的读操作(加读锁),不会阻塞其他进程对同一表的读操作,但会阻塞对同一表的写操作。...[tjv94gs8dw.png] 独占写锁 对MyISAM的写操作(加写锁),会阻塞其他进程对同一表的读写操作,只有当写锁释放后,才会执行其他进程的读写操作。锁释放前不能写其他。...当concurrent_insert设置为1时,如果MyISAM没有空洞(即的中间没有被删除的 行),MyISAM允许一个进程读的同时,另一个进程尾插入记录。...当concurrent_insert设置为2时,无论MyISAM中有没有空洞,都允许尾并发插入记录。 可以利用MyISAM存储引擎的并发插入特性,来解决应用对同一表查询插入的锁争用。...总结 数据库的锁锁定的粒度上分可以分为行级锁、页级锁级锁。 MySQL的MyISAM引擎支持级锁。 级锁分为两种:共享读锁、互斥写锁。这两种锁都是阻塞锁。

2.8K21

MySQL基础之一

DBMS: Database Manage System; DB: Database; Table:。存储一表信息应该是一种类型或者一种清单,便于SQL化管理; column:列。...没列都有相应的数据类型; row:行。每行记录一条记录。 primary key:主键。每一行都应该有标识自己的一列(一组列)。主键那一列其值能够唯一区分每一行。...所以同一表主键任意两行都不具有相同的键值。 二,基础操作, MySQL命令行使用程序时,以分号(;)结束每个语句。以quit/exit退出命令。...SHOW tables;‍‍该语句显示数据库中所有的。如图: ? SHOW columns from table;‍该语表示列出某个列及列的信息。如图: ? ‍...说明一下,SQL语句不区分大小写,但关键字一般采用大写,列表名一般采用小写。系统处理SQL语句时,多余所有的空格都将被忽略。 (待续)

67530

工作十几年,看到这样的代码,内心五味杂陈......

如下图所示: 1.2 隔离之前 ️插曲:一开始只有 1 个核心有 env 字段,其他均无该字段;有一天预发环境的操作影响到客户线上的数据。为了彻底隔离,剩余的二十几个均要添加上环境隔离字段。...挨个添加补充字段,工程量很多,出错概率极高 后续扩展容易 1.5 最终落地 mybatis 拦截器, 通过改写 SQL。新增时填充环境字段值,查询时添加环境字段条件。真正实现改一处即可。...简化举例:A B 方法都是独立的方法, A 调用 B 的过程,B 结束时把上下文环境字段删除, A 获取时得到 null。...具体如下: 2.6 五味杂陈 当我看到代码的一瞬间,彻底破防了...... queryProject 方法里面调用 findProjectWithOutEnv, 两个方法,都有填充处理 env 的代码...开闭原则符合了吗 改漏了应该办呢 其他人遇到跳过的检查的场景也加这样的代码吗 业务代码功能代码分离了吗 填充到应用上下文对象 user 合适吗 .......

18710

MySQL入门详解(二)---mysql事务、锁、以及优化

级锁:两种模式 共享锁(读锁)与独占锁(写锁,排他锁),级锁引擎:MyISAM MEMORY 共享锁:在读的时候上锁,所有人都可以访问不阻塞其他用户对同一表读请求,但阻塞同一表的写操作包括自己;自己如果加了读锁...,更新访问其他会提示错误;加了读锁之后不能再加写锁 独占锁:上锁之后其他人不能访问,阻塞其他用户对同一表的读写操作,独占锁优先级别高于共享锁;自己加了写锁可以读写记录,但更新访问其他都会提示错误...0:不允许并发插入 ,1:如果没有空洞(没有被删除的行)myisam允许一个进程读的同时,另一个进程尾插入记录,2:无论中有没有空洞,都允许尾插入记录 #读写锁优先级 max_write_lock_count...Using index:只使用索引树信息而不需要进一步搜索读取实际的行来检索的列信息,代表性能不错 Using temporary:为了解决查询,MySQL需要创建一个临时来容纳结果。...单多表sql优化手段: 给使用频繁的字段加索引,调整索引顺序最佳左前缀原则,删除多余干扰索引,调整查询条件对索引有干扰的语句放最后 多表sql额外优化手段: 小驱动大(小左边,where小.

1.1K50

分库分学习2-常用的术语

水平分: 一库一表->一库多表 水平分库: 采用取模的方式将满足条件的方式存储到不同的库,比如单双数据库将数据存储到不同库,一库一表->多库一表 2.相关术语 逻辑: 水平拆分的数据的总称,如订单...:t_order_0、t_order_1...的t_order 真实分片数据库真实的,如t_order_0、t_order_1等 数据节点: 数据分配的最小物理单元,由数据源和数据组成,...绑定之间多表关联查询不会出现笛卡尔积,查询效率会大大提升。绑定关系后,路由sql将会减少,提升效率。 广播: 所有分片数据源都存在的结构数据每个数据库均一致。...适用于数据量不大但海量数据关联的场景。 分片键: 用于分片的数据库字段,是将数据库()水平拆分的关键字段。如果sql无分片键,则路由效果差,也即此时查询的语句是多种,此时查询效率不是很好。...:用于处理数据库与其逻辑表相关的所有真实的操作,主要包括:不带分片键的DQL、DML、DDL sql改写: 用于将逻辑sql改写为真实数据库可以正确执行的sql sql执行: sharding-jdbc

61610

MySQL 锁机制——必知必会

对MyISAM的读操作,不会阻塞其他用户对同一表的读请求,但会阻塞对同一表的写请求;对 MyISAM的写操作,则会阻塞其他用户对同一表的读写操作;MyISAM的读操作与写操作之间,以及写操作之间是串行的...当concurrent_insert设置为1时,如果MyISAM没有空洞(即的中间没有被删除的行),MyISAM允许一个进程读的同时,另一个进程尾插入记录。这也是MySQL的默认设置。...当concurrent_insert设置为2时,无论MyISAM中有没有空洞,都允许尾并发插入记录。 可以利用MyISAM存储引擎的并发插入特性,来解决应用对同一表查询插入的锁争用。...但在InnoDB,除单个SQL组成的事务外,锁是逐步获得的,这就决定了InnoDB中发生死锁是可能的。...返回结果包括死锁相关事务的详细信息,如引发死锁的SQL语句,事务已经获得的锁,正在等待什么锁,以及被回滚的事务等。据此可以分析死锁产生的原因改进措施。 参考资料 《深入浅出MySQL》

76460

MyBatis中表的映射关系

--这里的dept哪里来,就是stepTwo(DeptMapper的)的查询出来的dept property : 设置需要处理映射关系的属性的属性名 select...: 设置分布查询的 sql语句的唯一表示 通过namespace.id : 获取sql语句的唯一标识 格式: 模块名.包名.接口名.方法名 column : 设置分布查询的..., 接下来就是根据员工信息的dept_id字段来查询出对应的部门的信息 再次解释assciation标签的select属性: 设置分布查询的 sql语句的唯一表示 通过namespace.id获取...-- property : 设置需要处理映射关系的属性的属性名 select : 设置分布查询的 sql语句的唯一表示 通过namespace.id...虽然这里我们用到的的字段名所对应的实体类的属性名不一致 ,但是设置的字段名使用’_’符合数据库的规则, 而实体类的属性也同样满足java驼峰命名规范,所以这里可以核心控制文件中加上下面这段代码

11410
领券