数据库
文章平均质量分 53
Winn~
这个作者很懒,什么都没留下…
展开
-
面试经典-MySQL篇
他是一个双向链表数据结构,只要你一个缓存页是空闲的, 那么他的描述数据块就会被放入这个free链表中,当你需要把磁盘上的数据页读取到Buffer Pool中的缓存页里去的时候,我们需要从free链表里获取一个描述数据块,然后就可以获取对应的空闲缓存页,接着我们就可以把磁盘上的数据页读取到对应的缓存页里去,最后把那个描述数据块从free链表里去除就可以了。凡是被修改过的缓存页,都会把他的描述数据块加入到flush链表中去,flush的意思就是这些都是脏页,后续都是要flush刷新到磁盘上去的。原创 2024-03-16 13:05:22 · 872 阅读 · 0 评论 -
MySQL范围查询导致联合索引停止匹配原理
假设建立一个联合索引 index(a, b),会先对a进行排序,在a相等的情况下对b进行排序,如下图所示。在该索引树上,a是全局有序的,而b则处于全局无序、局部有序状态。从全局来看,b的值为1、2、1、4、1、2,只有 b=2 查询条件无法直接使用该索引;从局部来看,当a的值确定时,b则是有序状态,a=2 && b=4可以使用该索引。所以范围查询使联合索引停止匹配的根本原因是,索引树上非首字段的有序状态依赖前一个字段相等情况,而范围查询破坏了下一个索引字段局部有序状态,导致索引停止匹配。原创 2024-02-23 16:32:04 · 259 阅读 · 0 评论 -
数据库怎么才能设计的更漂亮
但如果某个字段直接定义成NOT NULL,万一有些地方忘了给该字段写值,就会insert不了数据。这也算合理的情况。但有一种情况是,系统有新功能上线,新增了字段。上线时一般会先执行sql脚本,再部署代码。由于老代码中,不会给新字段赋值,则insert数据时,也会报错。由此,非常有必要给NOT NULL的字段设置默认值,特别是后面新增的字段。原创 2023-07-04 15:57:57 · 131 阅读 · 0 评论 -
如何解决MySQL limit深分页问题
这个SQL的执行时间如下:执行完需要0.742秒,深分页为什么会变慢呢?如果换成 limit 0,10,只需要0.006秒哦。原创 2023-05-17 14:53:52 · 677 阅读 · 0 评论 -
一张图看懂TiDB生产环境部署
原创 2021-11-09 19:00:53 · 348 阅读 · 0 评论 -
一张图看懂TiDB分布式数据库
原创 2021-11-09 18:56:50 · 480 阅读 · 0 评论 -
redis--zset类型操作命令
有序集合类型zset (sorted set )redis 有序集合zset和集合set一样也是string类型元素的集合,且不允许重复的成员。不同的是 zset 的每个元素都会关联一个分数(分数可以重复),redis 通过分数来为集合中 的成员进行从小到大的排序。有序集合类型 zset (sorted set )——基本命令zadd 语法:zadd key score member [score member…] 作用:将一个或多个 member 元素及其 score 值加入到有序集合 key转载 2020-07-16 16:58:10 · 328 阅读 · 0 评论 -
mysql基本命令
查看唯一索引:show index from mytable;//mytable 是表名查询到唯一索引后,如何删除唯一索引呢,使用如下命令:alter table mytable drop index mdl_tag_use_ix;//mdl_tag_use_ix是上表查出的索引名,key_name原创 2020-05-25 11:09:37 · 283 阅读 · 0 评论 -
编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小 的那个。
编写一个 SQL 查询,来删除 Person表中所有重复的电子邮箱,重复的邮箱里只保留 Id 最小的那个。对于条件(1),需要判断出所有重复的电子邮箱,即p1.Email = p2.Email;对于条件(2),需要判断重复邮箱中Id较大的:p1.Id > p2.Id。查询条件:删除所有重复的电子邮箱 ,重复的邮箱里只保留Id最小的哪个。(1)找出所有重复的电子邮箱(2)删除Id大的重复邮箱;查询范围:Person表。Id 是这个表的主键。查询目标:删除一条记录。原创 2020-05-13 15:23:46 · 1992 阅读 · 1 评论 -
互联网Java面试-MyBatis篇
1、什么是 Mybatis?1、Mybatis 是一个半 ORM(对象关系映射)框架,它内部封装了 JDBC,开发时只需要关注 SQL 语句本身,不需要花费精力去处理加载驱动、创建连接、创建statement 等繁杂的过程。2、Mybatis优点通过 xml 文件或注解的方式将要执行的各种 statement 配置起来,并通过java 对象和 statement 中 sql 的动态参数...原创 2020-04-07 20:21:57 · 196 阅读 · 0 评论 -
SQL语句调优
原创 AIOps Java后端技术作者:AIOps技巧1 比较运算符能用 “=”就不用“<>”“=”增加了索引的使用几率。技巧2 明知只有一条查询结果,那请使用 “LIMIT 1”“LIMIT 1”可以避免全表扫描,找到对应结果就不会再继续扫描了。技巧3 为列选择合适的数据类型能用TINYINT就不用SMALLINT,能用SMALLINT就不用INT,道理你...转载 2019-03-08 09:42:00 · 778 阅读 · 0 评论 -
查询Oracle正在执行和执行过的SQL语句
正在执行的select a.username, a.sid,b.SQL_TEXT, b.SQL_FULLTEXT from v$session a, v$sqlarea b where a.sql_address = b.address 执行过的select b.SQL_TEXT,b.FIRST_LOAD_TIME,b.SQL_FULLTEXT from v$sqla...原创 2018-07-27 17:09:50 · 1382 阅读 · 0 评论 -
聊聊MyBatis缓存机制
本文转载自公众号 美团技术点评1、前言MyBatis是常见的Java数据库访问层框架。在日常工作中,开发人员多数情况下是使用MyBatis的默认缓存配置,但是MyBatis缓存机制有一些不足之处,在使用中容易引起脏数据,形成一些潜在的隐患。 个人在业务开发中也处理过一些由于MyBatis缓存引发的开发问题,带着个人的兴趣,希望从应用及源码的角度为读者梳理MyBatis缓存机制。 本...转载 2018-04-11 17:14:26 · 305 阅读 · 0 评论 -
Oracle中 connect by prior遍历树算法
Oracle中start with...connect by prior子句用法 connect by 是结构化查询中用到的,其基本语法是: select ... from tablename start with 条件1 connect by 条件2 where 条件3; 例: select * from table转载 2017-09-13 10:34:58 · 488 阅读 · 0 评论 -
函数和存储过程的区别
先看一下存储过程和函数的定义。存储过程: 存储过程可以使得对数据库的管理、以及显示关于数据库及其用户信息的工作容易得多。存储过程是 SQL 语句和可选控制流语句的预编译集合,以一个名称存储并作为一个单元处理。存储过程存储在数据库内,可由应用程序通过一个调用执行,而且允许用户声明变量、有条件执行以及其它强大的编程功能。 存储过程可包含程序流、逻辑以及对数据库的查询。它们可以接受参数、输出参数、返回转载 2017-09-30 13:30:55 · 996 阅读 · 0 评论 -
全表扫描和索引扫描的区别
1) 全表扫描(Full Table Scans, FTS)为实现全表扫描,Oracle读取表中所有的行,并检查每一行是否满足语句的WHERE限制条件。Oracle顺序地读取分配给表的每个数据块,直到读到表的最高水线处(high water mark, HWM,标识表的最后一个数据块)。一个多块读操作可以使一次I/O能读取多块数据块(db_block_multiblock_read_count参数设转载 2017-10-11 14:23:39 · 3099 阅读 · 0 评论 -
oracle序列的cache_size说明
当前所新增的单据的序列,是在 [ LAST_NUMBER-CACHE_SIZE, LAST_NUMBER ]之间; 当序列走到5303时,其LAST_NUMBER会自动增加CACHE_SIZE值。创建序列对象的sql如下:create sequence name increment by x //x为增长间隔 start with转载 2017-10-11 15:01:59 · 6554 阅读 · 0 评论 -
Oracle使用细节点
1、Oracle表和字段是有大小写的区别。oracle默认是大写,如果我们用双引号括起来就说明表或字段名称是小写的,如果没有,系统会自动转成大写。2、Oracle数据备份语句:cmd –> 输入命令:exp 用户名/密码@SID file=f:\xx.dmp owner=用户名,回车3、以sqlserver,oracle,mysql为例,三种数据库中的字符串拼接:sqlserver:select原创 2017-11-06 14:12:20 · 375 阅读 · 0 评论 -
如何使用sql查询数据库表结构的设计
如何使用sql查询数据库表结构的设计原创 2017-09-25 10:21:57 · 2364 阅读 · 0 评论 -
Oracle创建序列
1、概念:所谓序列,在oracle中就是一个对象,这个对象用来提供一个有序的数据列,这个有序的数据列的值都不重复。1.序列可以自动生成唯一值2.是一个可以被共享的对象3.典型的用来生成主键值的一个对象4.可以替代应用程序代码5.当sequence的值存放在缓存中时可以提高访问效率。2、创建序列语法:CREATE SEQUENCE name[INCREMENT BY n][START WITH n]转载 2018-01-22 19:07:48 · 309 阅读 · 0 评论 -
SqlSessionTemplate是如何保证MyBatis中SqlSession的线程安全的?
一、DefaultSqlSession的线程不安全性在MyBatis架构中SqlSession是提供给外层调用的顶层接口,实现类有:DefaultSqlSession、SqlSessionManager以及mybatis-spring提供的实现SqlSessionTemplate。默认的实现类为DefaultSqlSession如。类图结构如下所示: 对于MyBatis提供的原生实现类来说,转载 2018-03-06 18:05:17 · 437 阅读 · 0 评论 -
Oracle和pl/sql安装配置的坑
自己在本地装了一下Oracle和pl/sql,过程中上遇到了无数的抗,今天在这里总结一下。Oracle1、Oracle的安装文件需要下载两个压缩包,但是解压后,需要吧解压后的文件合并为一个包,不然就会报“安装中止”的错。 2、如果在win10上安装Oracle,则需要更改win64_11gR2_database_1of2\database\stage\cvu\cvu_prereq...原创 2018-04-09 16:17:49 · 209 阅读 · 0 评论 -
Oracle的to_char函数使用方法
Postgres 格式化函数提供一套有效的工具用于把各种数据类型(日期/时间,int,float,numeric)转换成格式化的字符串以及反过来从格式化的字符串转换成原始的数据类型。注意:所有格式化函数的第二个参数是用于转换的模板。表 5-7. 格式化函数 函数返回描述例子to_char(timestamp, tex转载 2017-09-13 10:18:59 · 1075 阅读 · 0 评论