- 博客(33)
- 资源 (4)
- 收藏
- 关注
原创 MySQL(8) 优化、MySQL8、常用命令
其中,trigger_name是触发器的名称;如果innodb_buffer_pool_size是40GB,给操作系统分配4G,给连接使用的最大内存不到20G,如果连接过多,使用的内存超过20G,将会产生磁盘SWAP,此时将会影响性能。连接数过高,不一定带来吞吐量的提高,而且可能占用更多的系统资源。5.7自增主键不持久化,每次都查询表中最大的id+1去生成,这样如果删除最大id,重启数据库,再插入记录,id会是之前有过的,还有一种情况如果修改自增主键,mysql也是感知不到的,有可能会主键冲突。
2023-09-24 23:12:31 498
原创 MySQL(7) Innodb 原理和日志
MIXED:混合模式复制,实际就是前两种模式的结合,在Mixed模式下,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种,如果sql里有函数或一些在执行时才知道结果的情况,会选择Row,其它情况选择Statement,推荐使用这一种。N,还有一种折中方式,可以设置为N(N>1),表示每次提交事务都write 到page cache,但累积N个事务后才 fsync 写入磁盘,这种如果机器宕机会丢失N个事务的binlog。
2023-09-23 23:47:38 339
原创 MySQL(6)LOCK和MVCC
自增锁,autoinc锁,是主键自增的时候,保证主键自增安全性,有三个策略 0 1 2,默认1,0=insert操作完成后释放,2,insert操作开始前释放,1,由mysql自主决定。2. 如果 row 的 trx_id 落在红色部分( trx_id>max_id ),表示这个版本是由将来启动的事务生成的,是不可见的(若 row 的。1. 如果 row 的 trx_id 落在绿色部分( trx_id
2023-09-21 00:02:19 309
原创 MySQL(5)事务
InnoDB引擎中,定义了四种隔离级别供我们使用,级别越高事务隔离性越好,但性能就越低,而隔离性是由MySQL的各种锁以及MVCC机制来实现的。隔离性(Isolation):在事务并发执行时,他们内部的操作不能互相干扰,隔离性由MySQL的各种锁以及MVCC机制来实现。原子性由undo log日志来实现。(1)可重复读是在事物开始后查询第一条数据开始的快照,不只是当前记录或者当前表读的快照,其他的表。这些问题的本质都是数据库的多事务并发问题,为了解决多事务并发问题,数据库设计了事。
2023-09-19 21:57:10 440
原创 MySQL(4)索引实践二
代表指定mysql选着 t2 表作为驱动表。把驱动表的数据读入到 join_buffer 中,然后扫描被驱动表,把被驱动表每一行取出来跟 join_buffer 中的数据做对比。,join_buffer默认是256k,如果驱动表中数据大于join_buffer的容量,会分配取数据到join_buffer。一次一行循环地从第一张表(称为驱动表)中读取行,在这行数据中取到关联字段,根据关联字段在另一张表(被驱动。当使用join时,mysql会选择数据量比较小的表作为驱动表,大表作为被驱动表。
2023-09-18 00:00:27 209
原创 MySQL(3)索引实践一
AND age = 22 这种情况只会走name字段索引,因为根据name字段过滤完,得到的索引行里的age是无序的,无法很好的利用索引。在MySQL5.6之前的版本,这个查询只能在联合索引里匹配到名字是 'xiao' 开头的索引,然后拿这些索引对应的主键逐个回表,到主键索。MySQL 5.6引入了索引下推优化,可以在索引遍历过程中,对索引中包含的所有字段先做判断,过滤掉不符合条件的记录之后再回表,可。如果 字段的总长度小于max_length_for_sort_data ,那么使用 单路排序模式;
2023-09-17 20:59:18 201 1
原创 MySQL(2) Explain
在 select 语句之前增加 explain 关键字 ,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL。字符串,char(n)和varchar(n),5.0.3以后版本中,n均代表字符数,而不是字节数,如果是utf-8,一个数字。索引最大长度是768字节,当字符串过长时,mysql会做一个类似左前缀索引的处理,将前半部分的字符提取出来做索。id是select的编号,值越大执行优先级越高,如果相同,则从上往下执行,null最后执行。
2023-09-17 16:50:48 216
原创 MySQL(1) 索引结构
因为mysql数据是存在磁盘上的,查询磁盘消耗性能的最大因素就是磁盘IO,为了能减少磁盘IO,就要。B+Tree默认一个节点16kb大小,可以存储多个索引元素,而且只有叶子节点才会存数据,非叶子节点。尽量少的操作就能完成查询,B+Tree怎么能满足这个条件呢,他不像二叉树,一个节点只有一个元素,可以预估一下,B+Tree 3层树高低大概能存多少元素,假设,主键索引用8个字节,指针6个字节,因为索引是排好序的结构,如果不遵循最左前缀原则,查询的数据会全表扫描才能查询到所需要的数据。
2023-09-14 22:41:30 191
原创 redis 优化
redis如果做缓存来用,就是存一些热点数据,防止大量并发直接访问数据库,导致数据库压力过大,但是像大型网站,不可能把所有数据都存入redis,这就要做到redis储存数据的冷热分离,简单的做法就是给缓存的key加一个过期时间,如果get数据的时候给这个key设置续期,最终更加用户的操作来做到数据的冷热分离。缓存击穿和缓存雪崩,是统一时间大量缓存失效,或者redis宕机,总之有一点就是大量数据直接访问数据库,优化的措施就是缓存的过期时间随机生产,防止同一时间过期。缓存穿透就是查询绕过了redis,同
2022-03-20 11:48:33 1134
原创 redis 分布式锁
多个线程多一个资源进行访问,如果不加锁就会产生线程安全问题,在单体架构中可以使用synchronized和ReentrantLock来加锁,当一个线程获取锁后,就会进入同步代码块,其他线程只能在同步代码块外等待,但是分布式架构下,这个锁不能起到保证线程安全的作用,就要用到分布式锁来解决。通常说的分布式锁有redis实现和zookeeper,用的最多的就是redis分布式锁,效率也最高redis分布式锁的机制是这样的,redis 的setnx命令,能够实现,set一个key的时候,如果这个key不存在
2022-03-19 20:11:53 787
原创 一致性hash
一致性hash最先提出是为了解决分布式cache问题的,目前被很多分布式系统所使用在分布式系统中普通hash带来的弊端,通常分布式系统如果用普通hash,比如用请求数据hash出来值与服务器的数量取余,来定位某一个服务器,这样带来的问题就是如果服务器数量增加或减少,客户端请求某一对象时候需要重新计算hash,导致我们很有可能不能命中缓存,一致性hash就显得至关重要了。一致性hash解决问题的思路就是计算hash的过程不与机器数量直接相关,它是在一个虚拟的圆上,分了2的32次方的点,比如我们用服务器
2022-03-19 15:42:12 99
原创 kafka mqtt 各种超时机制
我们做的程序中一般都会有一些超时机制,来防止一些响应长时间没有反应,对程序造成影响,当然kafka mqtt同样有这种机制。kafka:发布:max.block.ms配置控制了KafkaProducer.send()并将KafkaProducer.partitionsFor()被阻塞多长时间。由于缓冲区已满或元数据不可用,这些方法可能会被阻塞止。用户提供的序列化程序或分区程...
2019-10-17 11:18:09 1833
转载 mysql 各种操作锁机制以及事物中update 后 insert 死锁产生的原因
转自:https://www.cnblogs.com/frankyou/p/9603784.html数据库使用锁是为了支持更好的并发,提供数据的完整性和一致性。InnoDB是一个支持行锁的存储引擎,锁的类型有:共享锁(S)、排他锁(X)、意向共享(IS)、意向排他(IX)。为了提供更好的并发,InnoDB提供了非锁定读:不需要等待访问行上的锁释放,读取行的一个快照。该方法是通过InnoDB的...
2019-10-17 08:54:15 1144 1
原创 docker 创建私有仓库 registry
1、下载dockeryun install docker2、通过中央仓库下载registrydocker run -d -p 5000:5000 -v `pwd`/data:/var/lib/registry -- restart=always --name registry registry:23、将已有的镜像打个tagdocker tag [repository:tag]...
2019-06-04 15:37:48 137
原创 mybatis <if>语句标签test中0与""比较的问题
现象:在mybatis 中使用判断一个字段不等于''<if test="param!= ''" >如果程序中,param 是number类型,而且值为0的情况下,会有 0==''情况发生。(mybatis 源码中String类型的"",在判断中通过对String的长度判断进行赋值,而""在判断逻辑中等同于0.0D,结果为double dv2=0.0)解决方法:1、...
2019-04-29 15:28:23 1811
原创 java 线程池
Executor(father)Executor框架便是Java 5中引入的,其内部使用了线程池机制,它在java.util.cocurrent包下,通过该框架来控制线程的启动、执行和关闭,可以简化并发编程的操作ExecutorService(father/sun)ExecutorService接口继承自Executor接口,提供了更丰富的实现多线程的方法,用该接口来实现和管...
2019-04-20 14:27:09 153
原创 kafka mqtt 断开重连问题
kafka mqtt 和spring 整合后自身都有重连机制的,分两种情况进行解释:1、项目启动时候连接不上服务器2、项目启动成功后服务器断开连接(1)mqtt1和2中情况类似,项目都能启动成功,重要的是,订阅和发布的区别,订阅的重接机制依托于心跳,可以设置心跳间隔,默认10s,而发布没有心跳机制,而是在发布的时候检查是否连接,如果没有则重连。(2)kafka1和2情况是有...
2019-03-21 13:21:32 2049
原创 MongoDB tar包安装
1、登录mongodb官网,下载安装包https://www.mongodb.com/download-center/community2.解压tar -zxvf mongodb-linux-x86_64-amazon-3.6.9.tgz 3.修改文件夹名称mv mongodb-linux-x86_64-amazon-3.6.9 mongodb4、在/usr/local/...
2019-01-08 11:31:57 2166
原创 kafka 安装(单机伪分布)
1、找到kafka官网 http://kafka.apache.org/2、下载 wget http://mirror.bit.edu.cn/apache/kafka/2.1.0/kafka_2.12-2.1.0.tgz3、解压 tar -zxvf kafka4、修改配置文件 server.properties以server.properties 为基础,cp 三个配置,分别ser...
2019-01-01 20:52:00 438
原创 zookeeper 安装(单机伪分布)
1、登陆zookeeper官网https://zookeeper.apache.org/2、获取下载地址,Linux 命令 wgethttp://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.13/zookeeper-3.4.13.tar.gz3、解压 tar -zxvf zookeeper4、修改配置文件(一台机器模拟集群)...
2018-12-30 17:00:18 273
原创 linux 下 redis安装
1.登录redis 官网 https://redis.io/download ,下载包,上传到linux,2.tar -zxvf redis 5.0.0 解压3.cd redis.5.0.0 ,进入 redis文件,执行make命令,对Redis解压后文件进行编译, 4.编译成功后,进入src文件夹,执行make install进行Redis安装5,执行, ./redis-...
2018-11-19 13:08:53 91
原创 linux 安装 mysql5.7
1、下载mysql登录官网https://www.mysql.com/2.上传到服务器,解压上传路径 usr/local解压 tar -zxvf 包修改包名 mv 包名 mysql3.安装新建mysql的用户和用户组命令 : groupadd mysql #添加用户组 useradd -r -g mysql...
2018-11-16 15:58:46 151
原创 linux安装jdk
1.下载jdk访问官网https://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html下载,上传到服务器下创建Java文件夹,下载包放进去,命令rz不起作用,需要安装,命令 yum install -y lrzsz解压 2.配置环境变量进入文件在文件最后加JA...
2018-11-15 11:27:08 107
转载 jQuery 对象与 dom对象区别
转自https://blog.csdn.net/michael8512/article/details/76281431jQuery对象是包装DOM对象后产生的,但是两者却不能混用,DOM对象才能使用DOM方法,jQuery对象才能使用jQuery方法,以下介绍两者转换的方法: jQuery对象转成DOM对象:(1)jQuery对象实际上是一个数据对象,可以通过[index]方法获...
2018-08-07 15:00:50 114
原创 mqtt callback注意事项
mqtt 订阅之后就执行一个callback,而callback 需要实现MqttCallback接口,实现三个方法public void messageArrived(MqttTopic topic, MqttMessage message)接收订阅的消息后执行的方法。public void deliveryComplete(MqttDeliveryToken token)接收到已经发布...
2018-08-06 20:07:48 15668 4
原创 Java程序中insert 执行慢的原因,以及c3p0连接池的配置
今天遇到一个问题,程序中一个insert 操作特别慢, 一直从来没有遇到过,select 操作如果数据量大的话,是有可能出现这种情况的,但是单条insert插入操作出现这种情况,不知道从何查原因了,debug了确定了就是insert这个操作慢,一开始分析是不是mysql原因,在Navicat上insert操作,嗖嗖的,排除,然后想到是不是数据库这张表一直在操作,查看下还真不是,然后想到是不是数据库...
2018-08-06 19:58:11 1268
原创 进制转换方法
基础概念:计算机通信和存储的时候都是以010101这样的二进制数据为基础的,这儿的一个0和1占的地方就叫bit(位),即一个二进制位,一个字节 byte 是八位,即八个二进制位。不同进制的产生:2进制,逢2进14进制,逢4进1。。。。。。16进制,逢16进116进制标示:0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F运算:x进制 —— 10 ...
2018-08-03 10:15:18 1406
原创 ajax axios 等跨域问题
(1)想讲一下ajax 与 axios 都是什么东西? 两者都是基于浏览器的,从浏览器中创建 XMLHttpRequest。XMLHttpRequest是一个浏览器接口,使得Javascript可以进行HTTP(S)通信,这就是我们熟悉的AJAX。而axios 是从 node.js 发出 http 请求XMLHttpRequest定义(在XHR诞生前,网页要获取客户端和服务器的任何状态更新,都需要...
2018-06-29 18:46:45 2254 1
原创 ajax 传输
ajax 通常需要配置 contentType 和 dataType;其中 contentType :告诉服务器,我要发送什么类型的数据,通常有几种:(1)application/x-www-form-urlencoded如果不设置,就默认为 application/x-www-form-urlencoded ,这应该是最常见的 POST 提交数据的方式了。浏览器的原生 form 表单(2)mu...
2018-05-09 11:28:49 343
转载 js中const,var,let区别
转子 https://www.cnblogs.com/ksl666/p/5944718.html今天第一次遇到const定义的变量,查阅了相关资料整理了这篇文章。主要内容是:js中三种定义变量的方式const, var, let的区别。1.const定义的变量不可以修改,而且必须初始化。1 const b = 2;//正确2 // const b;//错误,必须初始化 3 console.lo...
2018-05-07 15:04:44 79
原创 linux 服务器 mysql的安装
linux 服务器 mysql 安装一般都三种方式:1、直接登录小猫官网https://www.mysql.com/,下载安装包 ,这种方式百度上很多,不做详细介绍,主要介绍第二种。2、首先了解一个知识 yum rpmyum( Yellow dog Updater, Modified)是一个在Fedora和RedHat以及SUSE中的Shell前端软件包管理器。基於RPM包管理,能够从指定的服务...
2018-05-04 20:23:47 221
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人