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

水位线和全扫描

水位线好比水库中储水的水位线,用于描述数据库中段的扩展方式。水位线对全扫描方式有着至关重要的影响。...当使用delete 操作 表记录时,水位线并不会下降,随之导致的是全扫描的实际开销并没有任何减少。本文给出水位线的描述,如何降低水位线,以及水 位线对全扫描的影响。...一、何谓水位线     如前所述,类似于水库中储水的水位线。只不过在数据库中用于描述段的扩展方式。     可以将数据段或索引段等想象为一个从左到右依次排开的一系列块。...删除(delete)操作之后,水位线之下的块处于空闲状态,但水位线并不随之下降,直到重建,截断或收缩段。     ...使用低水位线可以减少当全面扫描段时,低水位线与水位线之间不安全块的检查数量。即低水位线之下的块不再检查。

49220

【DB笔试面试668】在Oracle中,什么是水位?如何回收水位

题目部分 在Oracle中,什么是水位?如何回收水位? 答案部分 Oracle数据库通过跟踪段中的块状态来管理空间。...曾遇到一个同事使用DELETE删除了一个很大的分区,然后执行SELECT查询很久都没有结果,以为是数据库HANG住了,其实这个问题是由于水位的缘故。...(4)exp/imp或expdp/impdp重构。 (5)若中没有数据则直接使用TRUNCATE来释放高水位。 如何找出系统中哪些拥有水位呢?这里给出两种办法,①比较的行数和的大小关系。...如果一个块存储的行数少于5行甚至更少,那么说明有水位。注意,这两种方法都不是十分准确,需要再对查询结果进行筛选。另外,在查询水位时,首先需要分析,以得到最准确的统计信息。...DELETE操作后,则最好回收一下水位

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

小白学习MySQL - MySQL会不会受到“水位”的影响?

如果按照Oracle的思维,堆是存在水位这个问题的,High-warter mark, HWM,存储空间就像水库一样,数据就像水库中的水,水的位置是存在一条线的,这就是水位线,在数据库刚建立的时候...这里有个特性,如果采用delete语句删除数据,数据虽然被删除了,但是水位线却没有降低,还是刚才删除数据以前那么水位,就是说这条水位线在日常的增删操作中只会上涨,不会下降, P.S....水位线影响最显著的就是全扫描的效率,因为当进行全扫描时,会扫描水位线以下的所有数据块,用上述的例子说,如果1220万数据,删除了1200万,只剩下20万,当进行全扫描的时候,不会只扫描这20万数据的数据块...如果是OLTP的系统,要尽量避免全扫描,通过索引,绕开高水位线带来的问题。 回到今天的主题,Oracle中的水位,在MySQL中究竟存在不存在?...并不会受到“水位”的影响。

2K20

Mysql数据库insert into select 插入常量

学习中遇到的问题以及解决分享给大家 1.Mysql最基本的插入操作 INSERT INTO tb1 (col1, col2) VALUES (val1,val2 ) 可以解决最基本的插入数据的问题,...如果我们想在中插入表格中已有的数据呢?显然需要其他的方法。...INTO SELECT 用法 INSERT INTO tb1 (col1,colx) SELECT col1,colx FROM tb2 我们可以通过 INSERT INTO SELECT 的用法在一个中插入其他中的数据...这种问题可能对于精通数据库的大大来说很简单,网上的资料也很详细,作为新手的我可能理解的不到位。如果同时插入常量和表格中已有的数据的怎么办呢?...3.插入常量 INSERT INTO tb1 (col1,colx) SELECT col1,valx FROM tb1 其实本质还是INSERT INTO SELECT 的用法,只是把其他化成了

2.2K30

MySQL-操作

[INTO] 数据1 [(字段列表)] SELETC [(字段列表)] FROM 数据名2; 注意:若数据中含有主键,而主键具有唯一性,所以在数据复制时还要考虑主键冲突的问题 拓展 临时的创建...: CREATE TEMPORARY TABLE 数据库.名 (表单) 解决主键冲突 在数据插入数据的时候,若中的主键含有实际的业务意义 主键冲突更新 主键冲突更新操作是指,当插入数据的过程若发生主键冲突...TRUNCATE [TABLE] 名 需要注意的是,当删除的数据量很小的时候,DELETE的执行效率要比TRUNCATE;只有删除的数据量很大的时候,才能看出TRUNCATE的执行效率比DELETE...。...分组与聚合函数 分组 在MySQL中,可以使用GROUP BY 根据一个或多个字段进行分组,字段值相同的为一组。另外对于分组的数据可以使用HAVING进行条件筛选。

2K10

MySQL&约束&事务

DQL操作 排序 # 通过 ORDER BY 子句,可以将查询出的结果进行排序(排序只是显示效果,不会影响真实数据) SELECT 字段名 FROM 名 [WHERE 字段 = 值] ORDER...ALTER TABLE emp2 DROP PRIMARY KEY; --主键的自增 # 主键如果让我们自己添加很有可能重复,我们通常希望在每次插入新记录时,数据库自动生成主键字段的值 -- 创建主键自增的...COMMIT 表示提交事务,即提交事务的所有操作,具体地说,就是将事务中所有对数据库的更新都写到磁盘上的物理数据库中,事务正常结束。...持 久 性 一旦事务执行成功,对数据库的修改是持久的。就算关机,数据也是要保存下来的. MySQL 事务隔离级别 一个数据库可能拥有多个访问客户端,这些客户端都可以并发方式访问数据库....查询得到的数据状态不准确,导致幻读 四种隔离级别 隔离级别相关命令 # 查看隔离级别 select @@tx_isolation; # 设置事务隔离级别,需要退出 MySQL 再重新登录才能看到隔离级别的变化

1.2K30

mysql-查询

语法: 一、查询的语法    SELECT 字段1,字段2... ...限制条数 二、关键字的执行优先级(重点) 重点中的重点:关键字的执行优先级 from where group by having select distinct order by limit 1.找到:...from 2.拿着where指定的约束条件,去文件/中取出一条条记录 3.将取出的一条条记录进行分组group by,如果没有group by,则整体作为一组 4.将分组的结果进行having过滤...5.执行select 6.去重 7.将结果按条件排序:order by 8.限制结果的显示条数 创建公司员工的字段和数据类型 company.employee     员工id          ...%小时任意多字符,_表示一个字符 5.逻辑运算符:在多个条件直接可以使用逻辑运算符 and or not 验证结果:where条件约束 1 :条件查询 mysql> select id,name from

4.3K20

python数据库-MySQL查询基本操作(50)

一、条件查询 1、查询的基本语法 select * from 名; from关键字后面写名,表示数据来源于是这张 select后面写中的列名,如果是*表示在结果中显示中所有列 在select后面的列名部分...distinct可以消除重复的行 elect distinct h_gender from hero; 3、使用where子句对表中的数据筛选,结果为true的行会出现在结果集中   select * from 名...=或 4.1、查询中全部数据(这个是我提前创建好的) mysql> select *from hero; +------+-----------+--------------+---------...,属于对原始数据的筛选 having是对group by的结果进行 七、排序   为了方便查看数据,可以对数据进行排序 select * from 名 order by 列1 asc|desc,列2...语法: select * from 名 limit start,count 从start开始,获取count条数据 start索引从0开始 mysql> select *from hero limit

10.3K30

mysql存储量

网上常说mysql2kw就需要考虑分了,但生产中我们也用过2亿的,而且毫无压力。所以记录一下为什么2kw就要分是依据什么原理,生产大概要注意什么。...1 存储原理这里只关注B+树的存储图片在MySQL中,为了保存内存地址,通常使用6字节来存储指针。...但是一般mysql到了第三层就差不多了,只需要通过3次IO,就可以读取到数据所在的叶子结点的页。至于提取需要的记录,则需要在内存中进行一次条件匹配。2 扩展这里2kw的原理就是这样的假设前提的。...如果是个小,一条数据不够1k,如0.1k,则第三层为2kw*2=2亿,3次IO也是问题。如果就是1k,256亿条以内的记录,也就是4次IO,真的有想象中的那么不堪吗?不一定!...4、为什么6 byte存储地址这是因为MySQL在32位系统上使用4字节来存储指针,而在64位系统上使用8byte来存储指针。为了在不同系统上保持兼容性,MySQL选择了6byte作为指针的存储长度。

24720

MySQL恢复步骤详解

万幸的是,只是写花了,而不是哪位大神在DB里面玩drop table。...虽然已经很久没进行恢复了,但大致步骤都还在脑海中,没花多久就搞定了~ 言归正传,记录一下恢复的步骤和关键点,提醒自己也提醒大家。...第四步: 在主库上将写花的改名,其目的有二个,其一,停止对这个的写入(当然这对业务会有一定的影响,会出现一段时间内的写入失败报警,需要提前和业务部门联系好),其二,一旦恢复失败,至少还有一个写花的存在...### 快速的方法可以按照如下操作,在还原机上的命令 mysql -uusername -ppassword -S /tmp/mysql.sock dbname tablename | mysql -uusername...drop table if exists tablename_bak; 数据库恢复是每个DBA必备的技能,需要熟练掌握,希望读过这篇文章的同学们都可以轻车熟路的进行恢复操作。

2.2K10

MySQL查询详细解析

一、关键字的执行优先级   1,from:找到   2,where:拿着where指定的约束条件,去文件/中取出一条条数据   3,group by:将取出的一条条数据进行分组,如果没有group...*12,是因为我们通过查询语句查询出来的也是一张,但是这个是不是内存当中的一个虚拟,并不是我们硬盘中存的那个完整的,对吧,虚拟是不是也有标题和记录啊, 既然是一个,我们是可以指定这个虚拟的标题的...name, salary*12 AS Annual_salary FROM employee; #as + 新字段名,就是起一个别名的意思,上面的那个salary*12的字段名也是一个别名,只不过不直观,是MySQL...100   3,in(80,90,100)   4,like 'ee%' 模糊匹配,%表示任意多字符,_表示一个字符   5,逻辑运算符:在多个条件直接可以用逻辑运算符 and or not #1:条件查询...group by post;#按照岗位分组,并查看每个组有多少人,每个人都有唯一的id号,我count是计算一下分组之后每组有多少的id记录,通过这个id记录我就知道每个组有多少人了 关于集合函数,mysql

2.6K11

MySql系列(1)——查询

1.查询所有字段 SELECT * FROM 名称; 例如查询book中所有的数据: select * from book; ?...2.查询指定字段 SELECT 字段1,字段2,字段3...FROM 名称; 例如查询book中的书籍名称: select bookName from book; ?...3.WHERE条件查询 SELECT * FROM 名称 WHERE 条件表达式; 例如查询book中书价格低于60的书籍名称: select bookName from book where...4.带In关键字查询 SELECT * FROM 名称 WHERE 字段 [NOT] IN (元素1,元素2,元素3); 注意:该字段查询结果后是元素1,元素2和元素3; 例如查询book中书的价格是...7.空值查询 SELECT * FROM 名称 WHERE 字段 IS [NOT] NULL;(此处的IS不可改为=) 例如查询中年龄为null的数据:select * from stu where

2.5K30
领券