![](https://img-blog.csdnimg.cn/20201014180756780.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
虽迟但到灬
一起快乐的努力
展开
-
navicat如何远程连接腾讯云服务器mysql
navicat如何远程连接腾讯云服务器mysql1.腾讯云上配置防火墙放行2.mysql配置需要为root用户或者新建用户配置所有主机可连接。3.navicat配置ssh和常规连接原创 2022-04-27 15:42:55 · 2075 阅读 · 0 评论 -
mysql三高讲解(三)3.2:如何确定用哪条索引
1.索引的确定基本原则实验:1.我们先新建一个表:CREATE TABLE sakila.city_1(city VARCHAR(50) NOT NULL);2.向里面插入数据:INSERT into sakila.city_1 select city from sakila.city;(将老的city表中的数据插入新的city_1表中5次)3.将新的city_1表中的数据打乱update sakila.city_1 set city = (select city from sakila.ci原创 2022-02-12 21:51:02 · 852 阅读 · 0 评论 -
mysql三高讲解(三)3.1 如何提高where效率
1.show create table xxx(表明)查看表名建立语句2.查看sakila数据库中inventory和inventory_1的index区别注意:分析select sql语句的时候,可以用explain关键字提升效率的话可以用联合索引比如select多个字段...原创 2022-02-12 15:53:01 · 565 阅读 · 0 评论 -
mysql三高讲解(二)2.9: mysql示例数据库sakia database的使用
1.mysql.com->document->more->sakia database2.点击TFG(linux)zip(windows)进行下载3.新建表4.导入数据5.查看数据库是否建立好6.注意:我们加压sakila会发现生成三个文件,两个sql一个sakila.mwb那么sakila用什么工具查看呢?mysql.com->DOWNLOADS->MySQL Community (GPL) Downloads->MySQL Workbench..原创 2022-02-12 14:13:52 · 491 阅读 · 1 评论 -
mysql三高讲解(二):2.8 mysql视图相关概念
视图算法的选择:实际操作中看下视图的使用和视图的算法的区别如果是上图那样创建的视图,我们会得到下面的sql原创 2022-02-11 21:49:02 · 188 阅读 · 0 评论 -
mysql三高教程(二):2.7 如何约束数据
如何在建表的时候对数据进行约束呢?一:Primary Key/Unique Key(1)通过将数据字段设置为索引,约束数据内容(2)Primary Key:唯一,不为NULL(3)Unique Key:唯一(4)唯一约束插入时的性能开销较大。为什么开销大:因为插入时要检查这个字段是不是唯一的。否则如果不是索引,就不需要检查。二:Foreign Key外键可以对数据的正确性实现约束触发器:由上图可以看到,mysql开启了严格模式,我们对设置了为不能为空字段插入空是被禁止的。如果va原创 2022-02-11 21:30:42 · 414 阅读 · 0 评论 -
mysql三高讲解(二):2.6 数据库索引”左侧用法“
一:联合索引注意:模糊查询会使索引失效原创 2022-02-11 21:18:09 · 114 阅读 · 0 评论 -
mysql三高讲解(二):2.5 InnoDB数据行介绍
行溢出数据InnoDB行记录格式主要分为两个时代Dynamic使用的最多的形式原创 2022-02-11 21:03:31 · 204 阅读 · 0 评论 -
mysql三高讲解(二):2.4 InnoDB数据表是如何存储的
原创 2022-02-10 21:40:18 · 77 阅读 · 0 评论 -
mysql三高讲解(二):2.3 InnoDB索引即数据
mysql以B+树数据结构作为底层索引的数据结构聚簇索引 Clustered Index 辅助索引 Secondary Index底层数据结构也是B+树总结:原创 2022-02-10 21:27:39 · 325 阅读 · 0 评论 -
mysql三高讲解(二):2.2 B+树的B的意义
mysql中InnoDB索引组织表用的什么索引所发:B+树主流索引查找算法:B+树,是B树和线性查找的结合线性查找:事件复杂度较高o(n)二分查找:存在问题:在大内存中,很难弄清内存中间点。先来看下二叉查找树但是他有个缺点:容易退化为线性查找。平衡二叉树:可以通过左旋或者右旋去平衡二叉树。分析:既然平衡二叉树已经没有了上述数据结构的缺点,我们的mysql的底层索引算法为什么不选择平衡二叉树呢。因为平衡二叉树,每个节点存储的数据量太小了。所以修复上面所有的问题,我们选择了B树原创 2022-02-10 21:10:22 · 310 阅读 · 0 评论 -
mysql三高讲解(二):2.1 索引组织表
索引组织表:Index Organized Table索引:索引是数据库中对某一列或多个列的值进行预排序的数据结构。索引可以理解为数据的”目录“。InnoDB中,主键是一个特殊索引字段。主键:InnoDB存储引擎表中,每张表都有一个主键。若表中有一个非空唯一索引(Unique not null),即为主键若有多个非空唯一索引,选择第一个定义的索引。若无,InnoDB自动创建一个6字节的指针作为主键通过前面的讲解,可知d是主键。解决方法:总结:InnoDB数据表均为索引组织表原创 2022-02-10 18:25:12 · 188 阅读 · 0 评论 -
mysql三高讲解(一)1.3 常见的mysql存储引擎
一:InnoDBmysql5.5.5之后的默认存储引擎支持事务,外键支持崩溃修复能力和并发控制二:MyISAMmysql5.5.5之前的默认存储引擎插入数据块,用了B+树空间利用率高不支持事务三:Memory内存型数据库所有数据都在内存中,速度快数据安全性差四:Archive数据压缩,空间利用率高读取效率慢插入速度快不支持索引,查询慢总结:1.InnoDB是目前最主流的存储引擎,适合各种互联网业务2.查询效率要求非常高,可以考虑MyISAM3.日志信息归档可以考虑A原创 2022-02-10 17:52:23 · 78 阅读 · 0 评论 -
mysql三高讲解(一):1.2 一个sql语句的执行过程
查询缓存:之前执行过的语句会以KV的形式缓存在内存中。查询先前查找过的内容会快速的返回结果。不推荐使用缓存:因为数据表修改后,会删除所有相关缓存。分析器:优化器:执行器:存储引擎:InnoDB...原创 2022-02-10 17:40:06 · 69 阅读 · 0 评论 -
mysql三高讲解(一):1.1 客户端怎样连接mysql数据库
主要有四种方法:(1)TCP/IP连接***(最主要的连接方式)MySQL TCP:通讯协议-认证连接服务端->客户端:发送握手初始化包客户端->服务端:发送验证(用户名,密码)服务端->客户端:认证消息结果命令执行:客户端->服务端:发送命令包(Command Packet)服务端->客户端:发送回应包断开连接:客户端->服务端:发送退出命令包报文格式:消息头:3字节报文长度,1字节序号消息体:N字节,1字节为指令,其余为参数指令举例:切原创 2022-02-10 17:26:34 · 715 阅读 · 0 评论 -
mysql软件架构
客户端是你的业务应用,怎么连接mysql server?一般都是用jdbc(Java)odbc(C++)客户端连接mysql 服务,发指令发sql语句等。文件系统:操作系统的文件系统,比如windows的文件系统,linux的文件系统。综上所述,我们可以把上面的mysql软件架构理解为,客户到操作系统的文件系统的中间流程。 mysql server就是将客户端的sql指令落实到文件系统的文件上。当客户端要查询某个文件某个内容时,mysql server在去找对应的文件。一:连接器功能:接收客户.原创 2022-02-10 16:59:39 · 557 阅读 · 0 评论 -
应用数据库软件的典型架构有哪些
分层架构,经典MVC架构:第一层:Presentation Layer表现层第二层:Business Layer业务层第三层:Persistence Layer持久层第四层:Database Layer数据库事件驱动架构:可以把中间白色长条中的Event Channel理解为消息队列,消息中间件等。管道过滤器架构:责任链,source可以是订单,事件等。每一步都有一个过滤器,每个filter把能处理的事务都处理掉。处理完之后,进行sink。比如:入职系统。本身内核内容很小,但是把很多.原创 2022-02-10 16:35:35 · 1503 阅读 · 0 评论 -
mysql更新密码
1.编辑/etc/my.cnf添加如下内容2.启动mysql服务systemctl start mysqld.service3.进入mysqlmysql4.键入下面的命令更新密码设置root用户密码update mysql.user set authentication_string=password(‘123456’) where user=‘root’;5.更新一下flush privileges;6.重启mysql服务systemctl restart mysqld.servi原创 2022-02-10 15:10:01 · 2277 阅读 · 0 评论 -
MySQL从安装改密码到navicate远程连接,以及修改存储路径
1.安装改密码:mysql安装以及修改密码2.mysql建立远程连接:navicate远程连接3.修改了mysql存储路径后的2002问题:解决办法:mkdir -p /var/run/mysqld/chmod 777 /var/run/mysqld/再重新启动下/usr/sbin/mysqld原创 2021-11-26 16:40:16 · 107 阅读 · 0 评论 -
redis的主从复制
redis的主从复制主从复制,读写分离!80%的情况下都是在进行读操作,减缓服务器的压力。架构中经常使用一主二从!主从复制的主要作用:1.数据冗余:主从复制实现了数据的热备份,是持久化的一种数据冗余方式。2.故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复,实际上是一种服务的冗余3.负载均衡:在主从复制的基础上,读和写分离,可以主节点提供写服务,由从节点提供读服务。分担服务器负载,尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高redis服务器的并发量。4原创 2021-11-21 15:52:38 · 232 阅读 · 0 评论 -
redis发布订阅
redis发布订阅消息队列redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送消息,订阅着接收消息。微信,微博关注系统!redis客户端可以订阅任意数量的频道。订阅/发布消息图第一个:消息发送者,第二个:频道,第三个:消息订阅者订阅端:subscribe aaa发送端publish aaa xxx那么在订阅端也会出现对应的信息xxx。这些命令广泛应用于广播,订阅系统等。使用场景:1.实时消息系统2.实时聊天(频道将信息回显给所有人)3.订阅,关注系统稍原创 2021-11-21 15:38:26 · 256 阅读 · 0 评论 -
redis持久化之aof
redis持久化之AOF:append only file将我们所有的命令记录下来,hisory,回复的时候就把这个文件全部执行一遍。下面看下流程图以日志的形式来记录每个写操作,将redis执行过的所有指令记录下来(读操作不记录),只许追加文件,但不可以改写文件,redis启动之初会读取该文件重新构建数据,换言之,redis重启的话就根据日志文件的内容将邪指令从前到后执行一次以完成数据的恢复工作。AOF保存的文件appendonly yes默认是不开启的,我们需要手动将其改为yes。而后就开原创 2021-11-21 15:21:34 · 529 阅读 · 0 评论 -
redis持久化之RDB
Redis持久化面试和工作,持久化都是重点Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失,所以Redis提供持久化功能。先看如下流程图RDB在指定的时间间隔内,将内存中的数据快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件,整个过程中,主进程是原创 2021-11-21 14:56:05 · 742 阅读 · 0 评论 -
redis配置文件conf详解
我们在启动redis的时候就通过shift来启动。行家有没有,出手就知道如上图片,我们得知配置文件unit对大小写不敏感上图所示,这个相当于可以把多个配置文件包含进来。关于:配置文件中的modules模块,可以加载一些so,这里不做重点,就不加贴图了。上图,所示表示网络连接绑定了本地ip。protected-mode yes。redis是否设置为受保护的模式,一般都应设为yes,表示开启受保护模式。port 6379。端口通过设置:GENERALdaemonize yes设置为后台运原创 2021-11-20 21:24:10 · 154 阅读 · 0 评论 -
redis事务乐观锁,watch
redis的乐观锁与悲观锁监控!watch悲观锁:·很悲观,认为什么时候都会出问题,无论做什么都会加锁。乐观锁:·很乐观,认为什么时候都不会出问题,所以不会上锁。更新数据判断一下,在此区间是否有人修改过这个数据。redis的监视测试正常执行成功127.0.0.1:6379> set money 100OK127.0.0.1:6379> set out 0OK127.0.0.1:6379> watch moneyOK127.0.0.1:6379> mul原创 2021-11-19 11:42:52 · 187 阅读 · 0 评论 -
redis高级用法:geo位置相关信息
三种特殊数据类型geospatial地理位置朋友的定位,附近的人,打车距离计算,方圆几里的人geoadd################################geoadd添加地理位置#原则:两级无法直接添加,我们一般会先下载城市数据,直接通过程序一次性导入。#参数:key 值(经度,纬度,名称)127.0.0.1:6379> geoadd China:city 116.40 39.90 beijing(integer) 1127.0.0.1:6379> ge原创 2021-11-18 18:25:52 · 257 阅读 · 0 评论 -
redis的hyperloglog用法
Hyperloglog什么事基数A{1,3,5,7,8,9}B{1,3,5,7,8}基数:不重复的元素,可以接受误差。Redis Hyperloglog基数统计的算法,网页的UV(一个人方 )优点:占用内存是固定的,2^ 64不同的元素的技术,只需要12kb,如果要从内存的角度来比较的话Hyperloglog首选!网页的UV(一个人访问一个网站多次,但还是算作一个人!)传统的方式,set保存用户的id,然后就可以统计set中的元素数量作为标准判断。这个方式如果保存大量的用户id,就会比较麻烦原创 2021-11-19 10:44:31 · 138 阅读 · 0 评论 -
redis的bitmap操作
Bitmaps 位图位存储统计疫情感染人数:0 1 0 1统计用户信息:活跃,不活跃的。登陆、未登录的。打卡、未打卡的。像这种两个状态的都可以用bitmaps。Bitmaps位图,数据结构,都是操作二进制位来进行记录,就只有0和1两个状态。365天 = 365bit 1字节 = 8bit 46个字节左右测试:bitmap来记录周一到周日的打卡周一:1 周二 0 …127.0.0.1:6379> setbit sign 0 0(integer) 0127.0.0.1:6379>原创 2021-11-19 10:58:52 · 335 阅读 · 0 评论 -
redis的事务
事务事务要么同时成功,要么同时失败,原子性。(关系型事务库才会保证原子性)redis事务本质:一组命令的集合,一个事务的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!一次性,顺序性,排他性,执行一系列的命令!注意:redis单条命令式保存原子性的,但是事务不保证原子性。redis事务没有隔离级别的概念!所有的命令在事务中,并没有直接被执行,只有发起执行命令的时候才会执行!Exec Redis的单条命令是保存原子性的,但是事务不保证原子性。redis的事务·开启事务()·命令入队()原创 2021-11-19 11:20:39 · 187 阅读 · 0 评论 -
redis的zset类型(有序集合)
Zset 有序集合#####################################在set的基础上,增加了一个值,set key1 v1,变成了zset key1 score1 v1127.0.0.1:6379> zadd myse 1 one(integer) 1127.0.0.1:6379> zadd myse 2 two 3 three(integer) 2127.0.0.1:6379> zrange myse 0 -1“one”“two”“three原创 2021-11-17 21:50:13 · 326 阅读 · 0 评论 -
redis的hash类型
Hash(哈希)#############################Map集合,key-map!的时候这个是一个map集合,本质和string类型没有本质区别127.0.0.1:6379> hset myhash field1 kuangshen(integer) 1127.0.0.1:6379> hget myhash field1“kuangshen”127.0.0.1:6379> hmset myhash field1 hello field2 worldOK原创 2021-11-17 17:15:09 · 546 阅读 · 0 评论 -
redis的set类型
set 集合set集合中的值是不能重复的。###########################sadd127.0.0.1:6379> sadd myset “hello”(integer) 1127.0.0.1:6379> sadd myset “hello”(integer) 0127.0.0.1:6379> sadd myset “kuangsheng”(integer) 1127.0.0.1:6379> smembers myset“kuangshen原创 2021-11-16 21:58:30 · 382 阅读 · 0 评论 -
redis的list类型
redis里面关于list的命令几乎都以l打头###################lpush,rpush127.0.0.1:6379> lpush list one 将一个值或者多个值插入列表的头部(integer) 1127.0.0.1:6379> lpush list two(integer) 2127.0.0.1:6379> lpush list three(integer) 3127.0.0.1:6379> LRANGE lis原创 2021-11-16 12:49:02 · 394 阅读 · 0 评论 -
redis基础类型:string
###############################获取字符串范围 getrange实例:127.0.0.1:6379> set key1 “hello,rxy”。 OK127.0.0.1:6379> getrange key1 0 3。 “hell”127.0.0.1:6379> getrange key1 0 -1。 “hello,rxy”设置字符串范围setrange实例:127原创 2021-11-15 19:05:40 · 48 阅读 · 0 评论 -
mac上python无法import redis
1.sudo python3 -m pip install redis 如果pycharm中还是无法正常引入的话,尝试在ide中打开terminal在ide中执行上面的命令2.有可能会遇到这个问题,commadn pip not found解决办法:(1)curl https://bootstrap.pypa.io/get-pip.py -o get-pip.py。下载 get-pip.py 文件并将其保存在 Python 安装目录中(2)python3 get-pip.py,来安装pip管理器(原创 2021-11-14 17:01:01 · 901 阅读 · 0 评论 -
mysql事务隔离级别与具体实例
基本概念:事务的隔离性就是指当多个事务同时运行时,各事务之间相互隔离,不可互相干扰。如果事务没有隔离性,就容易出现脏读、不可重复读和幻读等情况。事务概念针对不同的数据库基本同用,只是不同的数据库可能会有不同的概念,针对不同的数据库区别可能是默认的事务隔离级别不同而已。mysql针对数据库事务有如下隔离级别表:隔离级别脏读不可重复读幻读读未提交可能可能可能读已提交不可能可能可能可重复读不可能不可能可能串行化不可能不可能不可能注意:上原创 2021-11-05 22:35:43 · 408 阅读 · 0 评论 -
macOS安装mysql后,进入mysql出现command not found
1.新建.bash_profile文件2.export PATH=${PATH}:/usr/local/mysql/bin3.source .bash_profile4.mysql -u root -p原创 2021-11-05 10:21:36 · 209 阅读 · 0 评论 -
数据库主键与外键
主键概念:主关键字(primary key)是表中的一个或多个字段,它的值用于唯一地标识表中的某一条记录。外键概念:外键(foreign key)能保持数据的一致性、完整性主键用力啊标识数据的唯一性,而外键主要保证多张表的数据一致性,也就是需要保持多表同一数据的一致性,也许直接晦涩的解释其概念,对于起步接触数据库的人来说不太友好可以看如下实际用例。建一张department表,也可以把其理解为主表,这张主表用于记录部门id的唯一性。create table department(id int pr原创 2021-10-28 15:57:58 · 1223 阅读 · 0 评论