数据库
文章平均质量分 64
star.29
时不我待
展开
-
数据库专栏目录
数据库专栏目录1.数据库基础2.关系数据库3.数据库体系结构4.数据库垂直和水平拆分5.数据库连接池6.数据库批处理7.数据库存储引擎8.数据库事务9.数据库触发器(TRIGGER)10.SQL分类11.分布式和集群实现的原理12.对象存储13.负载均衡(Load Balance)14.Redis15.Redis基本操作16.Java使用Redis17.Redis...原创 2019-10-15 16:51:18 · 263 阅读 · 0 评论 -
Influxdb设置时区
Influxdb设置时区InfluxDB默认以UTC时间存储并返回时间戳,当接收到一个时序数据记录时,InfluxDB将时间戳从本地时区时间转换为UTC时间并存储,查询时,InfluxDB返回的时间戳对应的是UTC时间。InfluxDB支持通过在tz()子句中指定TZ格式的时区名字,如Asia/Shanghai,将UTC时间转换为中国本地时间。SELECT * FROM "cpu" WHERE time > now() - 5m tz('Asia/Shanghai')SELECT * FRO原创 2020-12-18 11:24:42 · 10631 阅读 · 1 评论 -
Influxdb基础
Influxdb基础InfluxDB是目前流行的时间序列数据库(TSDB,常见 TSDB:Influxdb、opentsdb、timeScaladb、Druid 等),时间序列数据库最简单的定义是数据格式里包含Timestamp字段的数据,比如某一时间环境的温度,CPU的使用率等,几乎所有的数据都可以打上一个Timestamp字段。时间序列数据更重要的一个属性是如何去查询它,包括数据的过滤,计算等等。Influxdb是一个开源的分布式时序、时间和指标数据库,使用go语言编写,无需外部依赖。其设计目标是实原创 2020-12-18 11:17:47 · 1067 阅读 · 0 评论 -
SpringBoot连接Redis的三种模式(主从复制、哨兵模式和集群模式)
SpringBoot连接Redis的三种模式(主从复制、哨兵模式和集群模式)SpringBoot连接Redispom.xml文件添加redis依赖 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId>原创 2020-10-23 13:23:08 · 5198 阅读 · 0 评论 -
通过CMD连接MySQL
通过CMD连接MySQL以管理员身份运行CMD原创 2020-07-24 22:15:13 · 175 阅读 · 0 评论 -
Redis高并发
Redis高并发Redis的高并发和快速原因1.Redis基于内存,内存的读写速度非常快;2.Redis是单线程的,为上下文切换线程节省了大量时间;3.Redis使用多路复用技术来处理并发连接。 非阻塞IO的内部实现使用epoll,以及由epoll +本身实现的简单事件框架。 epoll中的读取,写入,关闭和连接都被转换为事件,然后使用epoll的多路复用功能从不浪费任何时间在io上。...原创 2020-04-25 14:26:37 · 407 阅读 · 0 评论 -
Redis单线程原理
Redis单线程原理Redis是单进程单线程的,Redis利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。单线程指的是网络请求模块使用了一个线程(所以不需考虑并发安全性),即一个线程处理所有网络请求,其他模块仍用了多个线程。Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有到达服务端的...原创 2020-04-25 14:23:10 · 1728 阅读 · 0 评论 -
sql连接类型
sql连接类型sql连接类型有:内连接,外连接(左外,右外),全连接(交集),交叉连接(笛卡尔积)和自然连接内连接(INNER JOIN)内连接:内连接也叫连接,是最早的一种连接。还可以被称为普通连接或者自然连接,内连接是从结果表中删除与其他被连接表中没有匹配行的所有行,所以内连接可能会丢失信息。内连接你可以看做是取两个表的交集 其中只有两条互相对应着的数据才能被存入结果表中SEL...原创 2020-04-23 13:12:58 · 2889 阅读 · 0 评论 -
InnoDB和主键
InnoDB和主键MySQL是被广泛应用的数据库,InnoDB又是用得最广的存储引擎,主键又是对InnoDB性能影响最大的因素之一,主键选择对,可以极大提升性能。InnoDB建表时,可不可以不声明主键?可以不声明主键,但必须要有聚集索引:(1)有主键,主键是聚集索引;(2)没有主键,首个非空唯一列是聚集索引;(3)没有符合条件的列,row-id是聚集索引;主键和聚集索引不是一个东...原创 2019-10-31 21:02:23 · 925 阅读 · 1 评论 -
写缓冲(change buffer)
写缓冲(change buffer)(1)MySQL数据存储包含内存与磁盘两个部分;(2)内存缓冲池(buffer pool)以页为单位,缓存最热的数据页(data page)与索引页(index page);(3)InnoDB以变种LRU算法管理缓冲池,并能够解决“预读失效”与“缓冲池污染”的问题;毫无疑问,对于读请求,缓冲池能够减少磁盘IO,提升性能。问题来了,那写请求呢?情况一...转载 2019-10-26 15:23:37 · 309 阅读 · 0 评论 -
缓冲池(buffer pool)
缓冲池(buffer pool)应用系统分层架构,为了加速数据访问,会把最常访问的数据,放在缓存(cache)里,避免每次都去访问数据库。操作系统,会有缓冲池(buffer pool)机制,避免每次访问磁盘,以加速数据的访问。MySQL作为一个存储系统,同样具有缓冲池(buffer pool)机制,以避免每次查询数据都进行磁盘IO。InnoDB的缓冲池缓存什么?有什么用?缓存表数据...转载 2019-10-26 15:15:24 · 334 阅读 · 0 评论 -
InnoDB架构
InnoDB架构MySQL简要架构MySQL整体分为三层:(1)客户端,是各种编程语言的connector;(2)MySQL服务,内部包含各种组件,实现各种功能;(3)文件系统,数据存储与日志;其中,MySQL服务内,可以以插件的形式,实现各种存储引擎。在InnoDB,MyISAM,Memory…等各种存储引擎中,InnoDB是使用范围最广的。事务,行锁,聚集索引,MVCC…众多...转载 2019-10-26 14:59:38 · 211 阅读 · 0 评论 -
数据库允许空值(null)出现的问题
数据库允许空值(null)出现的问题数据准备:create table user (id int,name varchar(20),index(id))engine=innodb;insert into user values(1,'shenjian');insert into user values(2,'zhangsan');insert into user v...转载 2019-10-26 14:38:36 · 1340 阅读 · 0 评论 -
两类非常隐蔽的全表扫描,不能命中索引
两类非常隐蔽的全表扫描,不能命中索引第一类:“列类型”与“where值类型”不符,不能命中索引,会导致全表扫描(full table scan)。数据准备:create table t1 (cell varchar(3) primary key)engine=innodb default charset=utf8;insert into t1(cell) values ('111...转载 2019-10-26 14:27:10 · 199 阅读 · 0 评论 -
MySQL主键与唯一索引约束
MySQL主键与唯一索引约束触发约束检测的时机:insertupdate当检测到违反约束时,不同存储引擎的处理动作是不一样的。如果存储引擎支持事务,SQL会自动回滚。例子:create table t1 (id int(10) primary key)engine=innodb;insert into t1 values(1);insert into t1 val...转载 2019-10-26 14:20:44 · 424 阅读 · 0 评论 -
联合索引
联合索引联合索引是多个字段上建立的索引,能够加速复核查询条件的检索。举例,登录业务需求:select uid, login_time from t_user where login_name=? and passwd=?可以建立(login_name, passwd)的联合索引。联合索引能够满足最左侧查询需求,例如(a, b, c)三列的联合索引,能够加速a | (a, b) | ...原创 2019-10-26 14:07:38 · 465 阅读 · 0 评论 -
如何避免回表查询?什么是索引覆盖?
如何避免回表查询?什么是索引覆盖?一、回表查询这先要从InnoDB的索引实现说起,InnoDB有两大类索引:聚集索引(clustered index)普通索引(secondary index)InnoDB聚集索引和普通索引有什么差异?InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个聚集索引:(1)如果表定义了PK,则PK就是聚集索引;(2)...转载 2019-10-26 14:01:11 · 1338 阅读 · 0 评论 -
InnoDB支不支持哈希索引?
InnoDB支不支持哈希索引?对于InnoDB的哈希索引,确切的应该这么说:(1)InnoDB用户无法手动创建哈希索引,这一层上说,InnoDB确实不支持哈希索引;(2)InnoDB会自调优(self-tuning),如果判定建立自适应哈希索引(Adaptive Hash Index, AHI),能够提升查询效率,InnoDB自己会建立相关哈希索引,这一层上说,InnoDB又是支持哈希索引的...转载 2019-10-26 13:47:50 · 997 阅读 · 0 评论 -
MyISAM与InnoDB的索引差异
MyISAM与InnoDB的索引差异数据库的索引分为主键索引(Primary Inkex)与普通索引(Secondary Index)一、MyISAM的索引MyISAM的索引与行记录是分开存储的,叫做非聚集索引(UnClustered Index)。其主键索引与普通索引没有本质差异:有连续聚集的区域单独存储行记录主键索引的叶子节点,存储主键,与对应行记录的指针普通索引的叶子结点...转载 2019-10-26 13:34:22 · 236 阅读 · 0 评论 -
数据库索引底层的实现
数据库索引底层的实现问题1. 数据库为什么要设计索引?图书馆存了1000W本图书,要从中找到《架构师之路》,一本本查,要查到什么时候去?于是,图书管理员设计了一套规则:(1)、一楼放历史类,二楼放文学类,三楼放IT类…(2)、IT类,又分软件类,硬件类…(3)、软件类,又按照书名音序排序…以便快速找到一本书。与之类比,数据库存储了1000W条数据,要从中找到name=”shen...转载 2019-10-26 13:12:35 · 223 阅读 · 0 评论 -
数据库常用函数
数据库常用函数一、数学函数abs(x) 返回x的绝对值bin(x) 返回x的二进制(oct返回八进制,hex返回十六进制)ceiling(x) 返回大于x的最小整数值exp(x) 返回值e(自然对数的底)的x次方floor(x) 返回小于x的最大整数值greatest(x1,x2,...,xn)返回集合中最大的值least(x1,x2,...,xn) 返回集合中最小的值ln(...转载 2019-10-26 12:16:14 · 285 阅读 · 0 评论 -
MySQL数据库索引失效与优化详解
MySQL数据库索引失效与优化详解案例所用的表结构、索引、与数据如下:索引失效与优化全值匹配最佳左前缀法则不在索引列上做任何操作(计算、函数、(自动or手动)类型转换),会导致索引失效而转向全表扫描存储引擎不能使用索引中范围条件右边的列尽量使用覆盖索引(只访问索引的查询(索引列和查询列一直)),减少select *mysql在使用不等于(!=或者<>)的时候无法使...转载 2019-10-26 12:11:01 · 411 阅读 · 5 评论 -
数据库索引
数据库索引索引可以加快数据库的检索速度;表经常进行INSERT/UPDATE/DELETE操作就不要建立索引了,换言之:索引会降低插入、删除、修改等维护任务的速度;索引需要占物理和数据空间。索引的基础知识各个数据页可以组成一个双向链表而每个数据页中的记录又可以组成一个单向链表每个数据页都会为存储在它里边儿的记录生成一个页目录,在通过主键查找某条记录的时候可以在页目录中使用二分...原创 2019-10-24 18:29:13 · 297 阅读 · 0 评论 -
数据库主键、外键和唯一键的区别
数据库主键、外键和唯一键的区别现在我们想建立学生表,用来存储,一个系统的登陆信息。建表如下:create table student4( stu_id int primary key identity,--identity表示自增 stu_name nvarchar(10) unique not null, stu_sex nchar(1) not null, stu_add...转载 2019-10-24 17:42:43 · 2835 阅读 · 0 评论 -
事务隔离级别
事务隔离级别事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是:将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。事务的特性(...转载 2019-10-23 21:07:31 · 120 阅读 · 0 评论 -
Redis连接池
Redis连接池Redis 是单进程单线程的,它利用队列技术将并发访问变为串行访问,消除了传统数据库串行控制的开销。Redis 是基于内存的数据库,使用之前需要建立连接,建立断开连接需要消耗大量的时间。再假设 Redis 服务器与客户端分处在异地,虽然基于内存的 Redis 数据库有着超高的性能,但是底层的网络通信却占用了一次数据请求的大量时间,因为每次数据交互都需要先建立连接,假设一次数据...原创 2019-10-19 19:00:21 · 1507 阅读 · 0 评论 -
Oracle数据库基础
Oracle数据库基础Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。Oracle 是一个数据库管...原创 2019-10-16 21:33:35 · 966 阅读 · 0 评论 -
分布式和集群实现的原理
分布式和集群实现的原理分布式:1.将不同功能数据放到不同的机器上。2.将同一数据放到不同的服务器上(数据副本),服务器之间通过网络互通。(涉及到数据的一致局性问题)。分布式系统的CAP理论:● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是同样的值。(等同于所有节点访问同一份最新的数据副本)● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。...原创 2019-09-22 16:10:19 · 1462 阅读 · 0 评论 -
Redis基本操作
Redis基本操作Redis保存的文件夹如下:打开一个 CMD 窗口 使用 cd 命令切换目录到 D:\redis 运行: redis-server.exe redis.windows.conf如果想方便的话,可以把 redis 的路径加到系统的环境变量里,这样不用再输路径了,后面的那个 redis.windows.conf 可以省略,如果省略,会启用默认的。输入之后,会显示如下界面...转载 2019-09-11 21:02:12 · 214 阅读 · 0 评论 -
Redis
RedisREmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。它通常被称为数据结构服务器,因为值(value)可以是字符串(String), 哈希(...转载 2019-09-11 20:32:05 · 141 阅读 · 0 评论 -
SQL分类
SQL分类DDL(Data Definition Languages)语句:数据定义语言定义了不同的数据段、数据库、表、列、索引等数据库对象关键字:create、drop、alterDML(Data Manipulation Language)语句:数据操纵语句用于添加、删除、更新和查询数据库记录,并检查数据完整性关键字:insert、delete、update和select等DCL...原创 2019-08-23 11:27:54 · 161 阅读 · 0 评论 -
数据库触发器(TRIGGER)
数据库触发器(TRIGGER)是由事件来触发某个操作。这些事件包括INSERT语句、UPDATE语句和DELETE语句。当数据库系统执行这些事件时,会激活促发其执行相应的操作。...原创 2019-08-23 13:42:21 · 425 阅读 · 0 评论 -
数据库事务
数据库事务事务是在数据库应用中完成单一逻辑功能的操作集合在MySQL中只有使用了InnoDB数据库引擎的数据库或表才支持事务,事务处理可以用来维护数据库的完整性,保证成批的SQL语句要么全部执行,要么全部不执行。事务用来管理 insert、update、delete语句事务满足4个条件(ASID)原子性(Atomicity,或称不可分割性)一致性(Consistency)隔离...原创 2019-08-23 13:39:35 · 122 阅读 · 0 评论 -
关系数据库
关系数据库关系数据库基于关系模型,是一个或多个关系组成的集合。变量——关系变量类型——关系模式变量值——关系实例关系代数六个基本运算Select 选择Project 投影Union 并Set difference 差(集合差)Cartesian product 笛卡儿积Rename 更名(重命名)附加运算Set intersection 交Natural join 自...原创 2019-08-23 15:24:31 · 132 阅读 · 0 评论 -
数据库体系结构
数据库体系结构存储管理器在底层数据存储与应用程序及查询之间,提供接口对数据库中的数据进行高效存储,检索与更新。包括:事务管理、授权和完整性管理、文件管理、缓存管理查询处理器接收数据库语言输入,经过解析、优化、执行,输出相应结果给用户包括:解析和翻译、优化、执行查询处理优化不同执行方法之间的开销差可能是巨大的,需要预估操作的开销。...原创 2019-08-23 15:05:14 · 216 阅读 · 0 评论 -
负载均衡(Load Balance)
负载均衡(Load Balance)是一种使用非常普遍的优化方法,它的机制是利用某种均衡算法,将固定的负载量分布到不同的服务器上,以此来减轻单台服务器的负载,达到优化的目的。负载均衡可以用在系统中的各个层面中,从前台的web服务器到中间层的应用服务器,最后到数据层的数据库服务器,都可以使用。...原创 2019-08-23 14:58:06 · 329 阅读 · 0 评论 -
Java使用Redis
Java使用Redis安装在 Java 中使用 Redis 前, 需要确保已经安装了 redis 服务及 Java redis 驱动。安装 Java redis 驱动首先需要在 Jedis 官网 https://mvnrepository.com/artifact/redis.clients/jedis 下载最新驱动包 jedis.jar在 classpath 中包含该驱动包...转载 2019-09-14 16:43:34 · 187 阅读 · 0 评论 -
Hive
HiveHive是基于Hadoop的一个数据仓库工具,可以将结构化的数据文件映射为一张数据库表,并提供简单的sql查询功能,可以将sql语句转换为MapReduce任务进行运行。 其优点是学习成本低,可以通过类SQL语句快速实现简单的MapReduce统计,不必开发专门的MapReduce应用,十分适合数据仓库的统计分析。Hive是建立在 Hadoop 上的数据仓库基础构架。它提供了一系列的工...原创 2019-09-16 11:57:48 · 597 阅读 · 0 评论 -
对象存储
对象存储https://blog.csdn.net/nihaoa50/article/details/88327178#_2原创 2019-09-26 08:46:10 · 1103 阅读 · 0 评论 -
数据库批处理
数据库批处理批处理(batch)指的是一次操作中执行多条SQL语句,批处理相比于一次一次执行效率会提高很多。批处理操作数据库的过程主要是分两步:将要执行的SQL语句保存执行保存的SQL语句如何实现批处理Statement和PreparedStatement都支持批处理操作,这里我们只说明PreparedStatement的批处理方式:void addBatch()将要执行的...原创 2019-09-24 11:17:28 · 2922 阅读 · 0 评论