
数据库开发
文章平均质量分 69
关于数据库架构、Sql优化、疑难Sql等,若各位遇到数据库相关问题,欢迎留言,群策群力
优惠券已抵扣
余额抵扣
还需支付
¥19.90
¥99.00
购买须知?
本专栏为图文内容,最终完结不会低于15篇文章。
订阅专栏,享有专栏所有文章阅读权限。
本专栏为虚拟商品,基于网络商品和虚拟商品的性质和特征,专栏一经购买无正当理由不予退款,不支持升级,敬请谅解。
我爱夜来香A
不患人之不己知,患其不能也
展开
-
ORACLE批量插入更新如何拆分大事务?
上述语句中若test_tmp数据量比较大,merge到test的时候就会引起大事务,可以考虑对test_tmp的数据进行拆分,采用分页的思路,如下所示。说明了Mysql如何拆分,本篇文章探讨Oracle或OceanBase批量插入更新拆分大事务的问题。原创 2024-11-07 15:36:04 · 523 阅读 · 0 评论 -
OceanBase4.2授权INSERT ANY TABLE,插入某用户的表仍然报错:ORA-00942:table or view does not exists
当时排查了好久都没发现原因,后面在测试的过程中发现:去掉上述id列是可以正常insert的,上述ID列是OCEANBASE的自增ID设置语法,OCEANBASE没有类似于Mysql的auto increment,只能通过创建序列来实现自增。2、如何授权对指定用户表(授权前已存在、授权后新建表)的增删改查权限?1、OceanBase如何授权对指定用户表的增删改查权限?,后续对序列授权就可以了。原创 2024-10-31 11:12:03 · 274 阅读 · 0 评论 -
Mysql:常见问题
4、optimize table、analyze table、alter table这三种方式新建表的区别?2、查询缓存和缓冲池的区别。2、delete删表。原创 2024-04-29 15:04:01 · 670 阅读 · 1 评论 -
Oracle数据库Bug:相关子查询多层嵌套报错:标识符无效
把这条Sql拿到Oracle去执行,是报错的,报date标识符无效,这明显不大合理,在我的印象中,oracle是支持这种写法的,而且一般Mysql支持的特性Oracle也支持,后面发现是oracle版本的问题。我把这条Sql语句拿到Oracle 19c执行是没有问题的,而报错的oracle版本是11.2.0.3.0。因为oracle不支持limit,所以必须改写为row_number()或者rownum,如下所示。把上述代码改成keep语句,只用一层嵌套子查询。原创 2024-04-19 10:10:25 · 1234 阅读 · 0 评论 -
SQL进阶:Mysql如何实现full join?
【代码】Mysql如何实现full join?原创 2024-03-04 16:10:46 · 2558 阅读 · 0 评论 -
如何优化Mysql etl性能?
age int,...上面是自定义分区的大小。原创 2024-01-23 16:11:37 · 482 阅读 · 0 评论 -
数据库常用系统表及常用功能
1、查询所有连数据库的进程。1、查询正在运行的Sql。2、杀掉正在运行的Sql。原创 2024-01-19 17:06:34 · 254 阅读 · 0 评论 -
Mysql:RC隔离级别下如何提高并发?
意思是插入意向锁准备插入之前遇到了间隙锁,但是隔离级别是RC,按照网上的说法和文档,RC隔离级别是不会出现Gap Lock的,后面发现表中若有唯一索引,RC隔离级别下并发也会导致Gap Lock,去掉唯一索引,跑批就没问题了。Mysql是支持行锁的,但是行锁只是针对索引列,若删除条件未加索引会导致走表锁,这样就会造成死锁。索引建了之后运行还是报错死锁,打开死锁日志。原创 2023-11-09 09:28:35 · 307 阅读 · 0 评论 -
Mysql:锁
3、间隙锁(Gap Lock):是在索引范围间隙上设置的锁,用于防止其它事务在这个范围内插入新的记录,间隙锁可以避免幻读问题。6、设置锁等待超时参数:innodb_lock_wait_timeout(默认50s)4、尽量以相同顺序访问索引记录和表(两条Sql的加锁顺序不一致)Mysql引擎InnoDB支持表级锁和行级锁共存,默认为行级锁。3、避免大事务,将大事务拆分成多个小事务。1、记录锁(Record Lock)2、临键锁(Next-Key 锁)1、正常的读(S)写(X)表锁。原创 2023-11-07 09:00:19 · 280 阅读 · 0 评论 -
数仓删数方案
源头有逻辑删除标志的话,数仓直接同步过来,推数的时候可限制isvalid = 1。a、数仓中所有表加上是否有效标志,如isvalid,第一次默认全为1。b、找出已删除数据,插入这张临时表。b、更新逻辑删除标志。原创 2023-11-02 19:04:44 · 343 阅读 · 0 评论 -
SQL进阶:Oracle函数如何返回多行多列?
如何把多行collections拼接成一个大表?可以使用cross join(笛卡尔连接)原创 2023-10-21 10:30:17 · 924 阅读 · 0 评论 -
Mysql批量插入更新如何拆分大事务?
1、Mysql任务使用的更新方式是on duplicate key,执行完成之后,会发现数据库表的auto_increment一直增长且不连续,就算没有新增数据,只是修改数据,auto_increment也会一直增长。原理是:因为自增长ID都是主键,要求不能重复,必定是唯一的,所以设置为1后,mysql会自动检测AUTO_INCREMENT是否合法,若不合法,就会自动将AUTO_INCREMENT设置为当前表max(id)+1。使用limit分页拆分大事务。原创 2023-10-21 09:45:39 · 1311 阅读 · 1 评论 -
Oracle与Mysql语法区别
Oracle不支持,需要自己实现。原创 2023-10-14 13:16:10 · 591 阅读 · 0 评论 -
SQL进阶:求满足某列数值相加无限接近90%的行(90分位)
表中有某个id列和数值列,求数值列占比为90%的id,如有个用户表,存储id和消费金额order_cnt,求一条sql查出消费占比无限接近90%的所有客户,如表中总消费为10000,占比最高的是4000、3000、2800,对应A、B、C用户,查出A、B、C用户。2、用到sum但是不能计算全部行的sum,而是计算某一个窗口的sum,可以用到开窗函数。3、开窗函数无分组参数,有排序参数,分析函数作用范围从表中第一行作用到最后一行。1、求占比为90%说明要用到聚合函数sum。原创 2023-07-24 16:32:29 · 589 阅读 · 0 评论 -
PostgreSql学习:体系结构
postgreSql原创 2022-11-17 11:26:22 · 722 阅读 · 0 评论 -
PostgreSql学习:Centos7安装pg及相关参数设置
postgresql原创 2022-11-15 14:11:09 · 1008 阅读 · 0 评论 -
Sql优化(六):如何优化order by?
order by原创 2022-09-09 13:53:55 · 793 阅读 · 0 评论 -
PostgreSql学习:物理复制与逻辑复制
postgresql原创 2022-11-20 12:50:08 · 1240 阅读 · 0 评论 -
Sql优化(九):分页语句优化
sql原创 2022-07-20 23:54:42 · 305 阅读 · 0 评论 -
sql优化(十):关联更新
sql原创 2022-07-20 00:04:21 · 219 阅读 · 0 评论 -
sql优化(五):表连接
sql原创 2022-07-16 15:00:17 · 371 阅读 · 0 评论 -
sql优化(一):统计信息
sql原创 2022-07-10 22:30:27 · 335 阅读 · 0 评论 -
sql优化(三):为什么强调单块读与多块读?
sql原创 2022-07-10 21:16:53 · 271 阅读 · 0 评论 -
sql优化(二):执行计划中的访问路径
sql原创 2022-07-10 13:15:22 · 272 阅读 · 0 评论 -
sql进阶:Oracle中聚簇因子对索引的影响
sql原创 2022-07-03 17:18:48 · 306 阅读 · 0 评论 -
SQL进阶:如何查出某个日期第一列不为空的数据?
sql原创 2022-07-02 21:40:48 · 1030 阅读 · 0 评论 -
sql进阶:sql优化总结(全)
sql优化原创 2022-07-02 22:25:28 · 393 阅读 · 0 评论 -
数据结构学习:B+Tree
B+Tree原创 2022-06-19 12:01:38 · 427 阅读 · 0 评论 -
SQL进阶:求某个日期的连续上涨天数(常用于金融场景)
sql原创 2022-07-02 21:14:33 · 884 阅读 · 0 评论 -
Oracle学习:start with connect by prior
如下图所示,另外还会生成一列level,表示属于第几层。Oracle中的层次查询,根据条件递归查询树,类似下图。原创 2022-06-26 17:46:45 · 336 阅读 · 0 评论 -
update select语句为什么要加where exists()?以及用with语句进行update
1、使用update不加where exist()更新。2、加where exists()原创 2022-04-21 15:33:22 · 2184 阅读 · 0 评论 -
PostgreSql中一些特殊用法
1、[]数组类型PostgreSql允许将字段定义成变长的多维数组create table sql_test(name text, id integer[] schedule text[][]); insert into sql_test values ('david','{1000,1000,1000}','{{"meeting","lunch"},{"training","presentation"}}'); --上述建表语句还可换种写法 create tab原创 2021-12-28 10:23:56 · 1194 阅读 · 0 评论 -
Postgresql与Oracle语法区别
一、事务1、基本概念:Transaction是数据库管理系统DBMS执行过程中的一个逻辑单元,是一个sql命令组成的序列.其特点在于,当事务被提交DBMS后,DBMS需要确保所有的操作被完成;如果事务中有的操作未完成,那么所有操作都将回滚,回到事务提交之前的状态2、区别:Postgresql中的事务要手动开启,否则直接写update/insert/delete是默认自动提交的,手动开启方式如下begin;-开启事务 update test set name = 'c' where id = 1;原创 2021-12-27 15:39:06 · 6682 阅读 · 1 评论 -
Oracle学习:merge into语句使用delete?
一直使用merge into语句,但常见的都是update和Insert,那merge into是否支持delete操作呢?答案是支持,以Oracle数据库scott用户emp表为例create table emp2 as select * from emp;update emp2 a set a.sal = 1; merge into emp2 a using emp b on a.empno = b.empno when matched thenupdate a.sal = b原创 2021-09-01 17:00:59 · 4742 阅读 · 0 评论 -
Oracle学习:相关子查询浅析
1、相关子查询不一定要用exists,只要子查询不能单独运行即为相关子查询,且不加exists的相关子查询-和加exists的数据筛选过程一样2、以Oracle数据库默认用户scott表中的emp表为例select * from emp t where a.sal > (select avg(a.sal) from emp b group by a.deptno)--这样查询出来会是空值相关子查询筛选数据是一条一条的,每条数据在运行时都相当于一条数据一张表,这条查询语句在运行时原创 2021-09-01 16:38:16 · 315 阅读 · 0 评论 -
Oracle数据库Bug:使用call调用存储过程no_data_found错误不会报错?
直接上个验证代码create or replace procedure sp_testis v_count number;begin select 1 into v_count from dual where 1 != 1;end;call sp_test();大家可以试着执行一下,这条select into 语句是由错误的,但是使用call调用就不会报错,但是使用如下方式可以报错:begin sp_test();end;/无意中发现的,希望大家原创 2021-09-01 17:13:31 · 647 阅读 · 0 评论 -
oracle10g和11g的部分差异
1、oracle 10g不支持continue,可以使用if column = xx then nullend if;来进行跳过循环,执行下一次循环2、之前在写代码的过程中,发现10g在merge into部分的insert和update部分可以使用子查询,但是在11g中运行就会报错解决方法:在merge into的using部分使用子查询并取个别名,在update和insert只需要对应using部分新建的子查询即可...原创 2021-09-01 13:47:48 · 430 阅读 · 0 评论