DB
文章平均质量分 82
关系型数据库,非关系型数据库,数据库工具等
科技颠覆未来
金融+科技
Think-持续重构知识体系框架
展开
-
SQL性能优化 - 避免使用 IN 和 NOT IN
WHY?IN和NOTIN是比较常用的关键字,为什么要尽量避免呢?1、效率低项目中遇到这么个情况:t1表 和 t2表 都是150w条数据,600M的样子,都不算大。但是这样一句查询 ↓select * from t1 where phone not in (select phone from t2)直接就把我跑傻了。。。十几分钟,检查了一下 phone在两个表都建了索引,字段类型也是一样的。原来not in 是不能命中索引的。。。。改成 NOT EXISTS ...转载 2022-04-25 16:10:15 · 1205 阅读 · 0 评论 -
Elastic Search(ES)数据同步方案分析比较
当业务量上升后,由于mysql对全文检索或模糊查询支持的能力不强,在系统中查询的地方,往往会出现慢sql等,拖累系统其他模块,造成性能低下。随着ES使用普及率的升高,ES是mysql的一个有效补充。我们可以将数据发送到搜索引擎(如ES)上,由搜索引擎来提供专业的服务。接下来,就结合工作中实际用到的场景,对数据从mysql到es的同步进行一些分析。在实践中我总结出了以下几种方式。第1种:同步双写这是一种最为简单的方式,在将数据写到mysql时,同时将数据写到ES,实现数据的双写。...原创 2021-10-15 18:59:06 · 600 阅读 · 0 评论 -
Elasticsearch集群搭建及使用Java客户端对数据存储和查询
本次博文发两块,前部分是怎样搭建一个Elastic集群,后半部分是基于Java对数据进行写入和聚合统计。一、Elastic集群搭建1. 环境准备。 该集群环境基于VMware虚拟机、CentOS 7系统,公司目前用的服务器系统基本全是CentOS系统,因此就选了这个。Elasticsearch需要依赖的最低环境就是JDK8,且要配置好环境变量JAVA_HOME. Elasticsearch的安装也可以查看官网给出的安装说明。 虚拟机系统采用的是最小化安装,没有安装桌面程序。安装完程序再安转载 2021-10-15 15:15:40 · 651 阅读 · 0 评论 -
Redis更新缓存同步数据库的理解
Redis更新缓存同步数据库的理解Redis更新的正确方法:首先保证读写分离,其次对于写操作先删DB,再删缓冲。 看到好些人在写更新缓存数据代码时,先删除缓存,然后再更新数据库,而后续的操作会把数据再装载的缓存中。然而,这个是逻辑是错误的。试想,两个并发操作,一个是更新操作,另一个是查询操作,更新操作删除缓存后,查询操作没有命中缓存,先把老数据读出来后放到缓存中,然后更新操作更新了数据库。于是,在缓存中的数据还是老的数据,导致缓存中的数据是脏的,而且还一直这样脏下去了。视图分析:写流程(更原创 2021-05-04 10:33:29 · 154 阅读 · 0 评论 -
oracle join分类及用法
在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图、物化视图等联结)。SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN、 HASH JOIN等是表连接的物理实现方式。为了更直观的了解以上join方式,我们通过俩个测试表来进行测试,首先是建表语句:内连接:INNER JOINinner join 表示返回俩个表或记录连接字段的匹配记录。它有三种实现方式,如下图所示:注意:inner join 可以使用简写join方式,如...原创 2022-01-18 16:45:59 · 15757 阅读 · 0 评论 -
redis,MongoDB,ES的对比
一、MongoDB优点:表结构灵活可变,字段类型可以随时修改。缺点:MongoDB不需要定义表结构这个特点给表结构的修改带来了极大的方便,但是也给多表查询、复杂事务等高级操作带来了阻碍。应用场景:MongoDB很适合那些表结构经常改变,数据的逻辑结构没又没那么复杂不需要多表查询操作,数据量又比较大的应用场景。例如,游戏应用等。二、Redis优点:key-value存储所带来的简单和高性能。所谓key-value存储,就是每一条记录只包含一个用于查询数据的Key,以及与之对应的存储数据的va原创 2021-11-22 17:46:52 · 5490 阅读 · 1 评论 -
如何说明白oracle中schema(模式)和user(用户)的区别?
oracle数据库中schema和user是两个不同的对象,但是我们将他们混淆使用,也无伤大雅。因为在创建用户user的时候,会默认创建一个同名的schema,user和schema是一一对应的关系。比如创建了一个用户为hr,同时也会创建一个同名的schema,对于用户来说,user.object和schema.object是一样的,都是hr.obect。概念区别从图中可以清晰看出,user和schema是两个不同概念的对象:操作案例这里我们用生活中的例子来说明user和schema有什转载 2021-11-05 16:32:58 · 2862 阅读 · 0 评论 -
oracle行转列和列转行
一、行转列 在有些应用场景中,如学生成绩。学生所有科目的成绩都保存到一张表里面,当我们需要以列表的形式显示出学生所对应的每一科目的成绩的时候,需要使用到行转列。 示例 1 -- 学生成绩表 2 create table grade ( 3 id varchar2(64) not null, 4 name varchar2(20) not null,转载 2016-10-17 19:17:42 · 619 阅读 · 0 评论 -
Oracle GoldenGate学习之Goldengate介绍
GoldenGate TDM(交易数据管理)软件是一种基于日志的结构化数据复制软件,它通过解析源数据库在线日志或归档日志获得数据的增删改变化,再将这些变化应用到目标数据库,实现源数据库与目标数据库同步、双活。GoldenGate TDM 软件可以在异构的IT基础结构(包括几乎所有常用操作系统平台和数据库平台)之间实现大量数据亚秒一级的实时复制,其复制过程简图如下:GoldenGate学习之转载 2016-08-03 14:16:54 · 468 阅读 · 0 评论 -
oracle中like和instr
instr(title,'手册')>0相当于 title like '%手册%' instr(title,'手册')=1相当于 tile like '手册%' instr(title,'手册') instr的性能要比like好很多,特别是在数据量比较大的情况下; select id, name from users where instr('101914,原创 2013-08-15 11:46:19 · 643 阅读 · 0 评论 -
Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别
Oracle数据库中SYS、SYSTEM、DBSNMP、SYSMAN四用户的区别 SYS用户: SYS,默认密码为CHANGE_ON_INSTALL,当创建一个数据库时,SYS用户将被默认创建并授予DBA角色,所有数据库数据字典中的基本表和视图都存储在名为SYS的方案中,这些基本表和视图对于Or转载 2013-07-26 11:01:31 · 1950 阅读 · 0 评论 -
oracle命令行导入dmp文件
imp userid=sys/manager@orcl file=E:\wft_flowcontrol.dmp full=y原创 2013-08-07 11:48:05 · 683 阅读 · 0 评论 -
oracle 的NOLOGGING
可以采用NOLOGGING模式执行以下操作:1 索引的创建和ALTER(重建)。2 表的批量INSERT(通过提示使用“直接路径插入“。或采用SQL*Loader直接路径加载)。表数据不生成redo,但是所有索引修改会生成redo,但是所有索引修改会生成redo(尽管表不生成日志,但这个表上的索引却会生成redo!)。3 LOB操作(对大对象的更新不必生成日志)。4 通转载 2013-08-08 14:51:29 · 1007 阅读 · 0 评论 -
在线重定义原理探讨
1、准备测试表SQL> createtable t_d asselect * fromall_objects; Table created SQL> altertable t_d addprimary key(object_id); Table altered SQL> cre转载 2013-08-08 21:03:21 · 687 阅读 · 0 评论 -
oracle查看表数据的对象,所在文件,所在块等信息
select rowid, dbms_rowid.rowid_object(rowid) object_id, dbms_rowid.rowid_relative_fno(rowid) file_id, dbms_rowid.rowid_block_number(rowid) block_id, dbms_rowid.rowid_ro转载 2013-08-09 11:52:49 · 1622 阅读 · 0 评论 -
行链接和行迁移检测和消除方法
在官方文档中,翻译Performance Tuning Guide /10.2.4.3 Table Fetch by Continued Row. You can detect migrated or chained rows by checking the number of tablefetchcontinuedrow statistic in V$SYSSTAT. A转载 2013-08-09 15:40:16 · 584 阅读 · 3 评论 -
ALTER TABLE...MOVE 相关使用方法
1. The ALTER TABLE...MOVE statement enables you to relocate data of a non-partitioned table or of a partition of a partitioned table into a new segment, and optionally into a different tablespace f转载 2013-08-09 16:08:00 · 2373 阅读 · 0 评论 -
IN和EXISTS的详解
从效率来看: 1) select * from T1 where exists(select 1 from T2 where T1.a=T2.a) ; T1数据量小而T2数据量非常大时,T12) select * from T1 where T1.a in (select T2.a from T2) ; T1数据量非常大而T2数据量小时,T1>>T2转载 2014-11-17 00:01:21 · 481 阅读 · 0 评论 -
行迁移和行链接
1.什么是行迁移:原本存储在一个数据块内的数据行,因为更新操作导致长度增长,而所在数据块的可用空间也不能容纳增长后的数据行。在这种情况下,oracle将此行数据迁移到新的数据块中,oracle在被迁移数据行原本所在位置保存一个指向新数据块的指针。被迁移数据行的rowid保持不变。当数据行发生链接或迁移时,对其访问将会造成I/O性能降低,因为oracle为获取这些数据行的数据时,必须访问更多的数原创 2014-10-16 19:37:58 · 579 阅读 · 0 评论 -
sql小样例
问题:目前有主表main,三个子表table1,table2,table3通过外键main_id一对一关联,main表的一个字段type,type=1,表示类型为子表1,type=2表示类型为子表2,type=3表示类型为子表3需要读取所有主表的记录,显示的属性为type和name(分别为子表的属性)with A as (select main_id,max(name) name,m原创 2013-03-21 17:47:22 · 717 阅读 · 0 评论