------【MySQL】
文章平均质量分 79
Mr小林
软件工程师的成才之路。
展开
-
mysqlbinlog结合sed命令恢复update时未加where条件之前的数据 精选 原创
记录一下:因为自己的误操作,导致运营中的数据库表数据被更新掉(update未加where条件),本文章引用来自。转载 2022-08-25 11:18:09 · 1214 阅读 · 1 评论 -
MYSQL-B+TREE索引原理 B-Tree以及聚簇索引
1.什么是索引?索引:加速查询的数据结构。2.索引常见数据结构:#1.顺序查找: 最基本的查询算法-复杂度O(n),大数据量此算法效率糟糕。#2.二叉树查找(binary tree search): O(log2n)图1左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对应数据记录物理地址的指针,这样就可以运用二叉查找转载 2022-03-26 20:42:19 · 697 阅读 · 1 评论 -
Mysql并发时经典常见的死锁原因及解决方法
1.mysql都有什么锁MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法:next KeyLocks锁,同时锁住记录(数据),并且锁住记录前面的Gap Gap锁,不锁记录,仅仅记录前面的GapRe...转载 2022-03-13 16:58:34 · 3503 阅读 · 0 评论 -
replace into和insert into on duplicate key update的区别
在项目中,我们经常会遇到当数据库存在某条记录时,则更新数据,若不存在则插入数据的情况。在mysql中,replace into ...和insert into ... on duplicate key update ... 都可以实现,那么这两种有什么区别呢?replace into和on duplcate key update都是只有在primary key或者unique key冲突的时候才会执行。如果数据存在,replace into则会将原有数据删除,再进行插入操作,这样就会有一种情况,如果某些转载 2021-11-11 09:53:11 · 251 阅读 · 0 评论 -
浅谈MySQL索引的分类
什么是索引?索引是辅助存储引擎高效获取数据的一种数据结构。很多人形象的说索引就是数据的目录,便于存储引擎快速的定位数据。索引的分类我们经常从以下几个方面对索引进行分类从数据结构的角度对索引进行分类B+tree Hash Full-texts索引从物理存储的角度对索引进行分类聚簇索引 二级索引(辅助索引)从索引字段特性角度分类主键索引 唯一索引 普通索引 前缀索引从组成索引的字段个数角度分类单列索引 联合索引(复合索引)数据结构角度看索引下表是转载 2021-11-09 14:44:22 · 224 阅读 · 0 评论 -
Sharding-Jdbc 实现读写分离 + 分库分表,写得太好了
| 概览ShardingSphere-Jdbc定位为轻量级Java框架,在Java的Jdbc层提供的额外服务。它使用客户端直连数据库,以jar包形式提供服务,可理解为增强版的Jdbc驱动,完全兼容Jdbc和各种ORM框架。| MySQL主从复制1)docker配置mysql主从复制1)创建主服务器所需目录mkdir-p/usr/local/mysqlData/master/cnfmkdir-p/usr/local/mysqlData/master/data2)定义主...转载 2021-11-04 10:33:03 · 538 阅读 · 0 评论 -
基于springboot的mysql实现读写分离
前言: 首先思考一个问题:在高并发的场景中,关于数据库都有哪些优化的手段?常用的有以下的实现方法:读写分离、加缓存、主从架构集群、分库分表等,在互联网应用中,大部分都是读多写少的场景,设置两个库,主库和读库,主库的职能是负责写,从库主要是负责读,可以建立读库集群,通过读写职能在数据源上的隔离达到减少读写冲突、释压数据库负载、保护数据库的目的。在实际的使用中,凡是涉及到写的部分直接切换到主库,读的部分直接切换到读库,这就是典型的读写分离技术。本篇博文将聚焦读写分离,探讨如何实现它。作者|Yrion..转载 2021-10-26 10:05:49 · 233 阅读 · 1 评论 -
mysql错误:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
java.lang.ClassNotFoundException: com.mysql.jdbc.Driver今天早上,在配置基础的SSM框架时遇到这样的一个问题:java.lang.ClassNotFoundException: com.mysql.jdbc.Driver当时的第一反应就是jar包缺失,所以立马去看了pom.xml文件中自己是否导入了 “mysql-connector-java” 这个jar包出现这个异常,有可能是没有添加mysql-connector-java的依赖导致无法.原创 2021-05-13 09:20:55 · 424 阅读 · 0 评论 -
Mysql为什么数据库字段要使用NOT NULL?
最近刚入职新公司,发现数据库设计有点小问题,数据库字段很多没有NOT NULL,对于强迫症晚期患者来说,简直难以忍受,因此有了这篇文章。基于目前大部分的开发现状来说,我们都会把字段全部设置成NOT NULL并且给默认值的形式。通常,对于默认值一般这样设置: 整形,我们一般使用0作为默认值。 字符串,默认空字符串 时间,可以默认1970-01-01 08:00:01,或者默认0000-00-00 00:00:00,但是连接参数要添加zeroDateTimeBehavior=c转载 2021-04-08 13:45:38 · 342 阅读 · 0 评论 -
mysql不同版本的默认最大连接数和上限
上午刚工作10分左右,同事说在使用jira时出现问题,具体截图如下:通过上图的报错信息:定位为mysql数据库连接数的问题解决方法:1.登录mysql进行查看Mysql –uroot –p123456mysql> show variables like'%max_connections%';+-----------------+-------+| Variable_name | Value |+-----------------+-------+| max_connect转载 2021-03-26 10:00:00 · 333 阅读 · 0 评论 -
【MySQL技术内幕】分布式事务-两阶段提交
1、MySQL数据库分布式事务InnoDB存储引擎提供了对XA事务的支持,并通过XA事务来支持分布式事务的实现。分布式事务指的是允许多个独立的事务资源(transactional resources)参与到一个全局的事务中。事务资源通常是关系型数据库系统,但也可以是其他类型的资源。全局事务要求在其中的所有参与的事务要么都提交,要么都回滚,这对于事务原有的ACID要求又有了提高。另外,在使用分布式事务时, InnoDB存储引擎的事务隔离级别必须设置为SERIALIZABLE。XA事务允许不同数据库之间的转载 2020-12-22 10:43:51 · 195 阅读 · 0 评论 -
【面试宝典】mysql的事务实现原理——一篇文章搞定mysql面试
开篇相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题:事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理可靠性:数据库要保证当insert或update操作时抛异常或者数据库crash的时候需要保障数据的操作前后的一致,想要做到这个,我需要知道我修改之前和修改之后的状态,所以就有了undo转载 2020-09-21 11:02:15 · 284 阅读 · 0 评论 -
为什么MySQL不推荐使用uuid或者雪花id作为主键?
前言在mysql中设计表的时候,mysql官方推荐不要使用uuid或者不连续不重复的雪花id(long形且唯一,单机递增),而是推荐连续自增的主键id,官方的推荐是auto_increment,那么为什么不建议采用uuid,使用uuid究竟有什么坏处?本篇博客我们就来分析这个问题,探讨一下内部的原因。本篇博客的目录mysql程序实例 使用uuid和自增id的索引结构对比 总结一、mysql和程序实例1.1.要说明这个问题,我们首先来建立三张表分别是user_auto_key,u转载 2020-09-09 13:35:05 · 129 阅读 · 0 评论 -
一手好 SQL 是如何炼成的?
目录MySQL性能最大数据量最大并发数查询耗时0.5秒实施原则数据表设计数据类型避免空值text类型优化索引优化索引分类索引优化SQL优化分批处理操作符<>优化OR优化IN优化不做列运算避免Select allLike优化Join优化Limit优化其他数据库博主负责的项目主要采用阿里云...转载 2020-05-08 09:27:32 · 251 阅读 · 0 评论 -
大型互联网公司分布式ID方案总结
ID是数据的唯一标识,传统的做法是利用UUID和数据库的自增ID,在互联网企业中,大部分公司使用的都是Mysql,并且因为需要事务支持,所以通常会使用Innodb存储引擎,UUID太长以及无序,所以并不适合在Innodb中来作为主键,自增ID比较合适,但是随着公司的业务发展,数据量将越来越大,需要对数据进行分表,而分表后,每个表中的数据都会按自己的节奏进行自增,很有可能出现ID冲突。这时就需要一个...转载 2020-04-23 14:14:59 · 273 阅读 · 0 评论 -
详细分析MySQL事务日志(redo log和undo log)
undefinedinnodb事务日志包括redo log和undo log。redo log是重做日志,提供前滚操作,undo log是回滚日志,提供回滚操作。undo log不是redo log的逆向过程,其实它们都算是用来恢复的日志:1.redo log通常是物理日志,记录的是数据页的物理修改,而不是某一行或某几行修改成怎样怎样,它用来恢复提交后的物理数据页(恢复数据页,且只能恢复到...转载 2020-04-22 16:25:36 · 588 阅读 · 0 评论 -
sharding-jdbc结合mybatis实现分库分表功能
sharding-jdbc 实现分库分表 ,两种方式--> 一种是客户端方面集成,另一种是代理层(代理层官网上有,Navicat可以直接连接,连接方式相当于连接数据库)最近忙于项目已经好久几天没写博客了,前2篇文章我给大家介绍了搭建基础springMvc+mybatis的maven工程,这个简单框架已经可以对付一般的小型项目。但是我们实际项目中会碰到很多复杂的场景,比如数据量很大...转载 2020-04-12 17:09:10 · 1536 阅读 · 0 评论 -
Mysql 主从复制
最常见的集群方案MySQL Replication主从复制(也称 AB 复制)允许将来自一个MySQL数据库服务器(主服务器)的数据复制到一个或多个MySQL数据库服务器(从服务器)。复制是异步的 从站不需要永久连接以接收来自主站的更新。根据配置,您可以复制数据库中的所有数据库,所选数据库甚至选定的表。MySQL中复制的优点包括:横向扩展解决方案 - 在多个从站之间...转载 2020-04-10 17:37:31 · 455 阅读 · 0 评论 -
mysql实现主从复制/主从同步
业务场景小公司业务代码存于一个服务器上,而这个服务器有的时候回宕机,导致业务停顿,造成影响。这个时候 就需要做高可用 两个ngix+两个tomcat+两个mysql实现高可用,避免单点问题。中间使用keepalived监听。下面先从简单的mysql主从搞起。下面按照老方式,what->why->how ,是什么,为什么,怎么做来讲解一波。(what)什么是mysql 的主从复...转载 2020-04-03 11:57:48 · 161 阅读 · 0 评论 -
MySQL MVCC(多版本控制)
1. MySQL 中的事务MySQL 提供了两种事务型的存储引擎:InnoDB 和 NDB Cluster 。另外还有一些第三方存储引擎也支持事务1. MySQL 中的事务 1.1. 自动提交(AUTOCOMMIT) 1.2. 在事务中混用存储引擎 2. 多版本并发控制(MVCC) 2.1. InnoDB 的MVCC 3. MySQL 中的事务 3.1. 自动提交(A...转载 2020-03-31 22:00:05 · 174 阅读 · 0 评论 -
MySql 保证事务的原子性和持久性
文章目录1、前言2、undo日志2.1 作用2.2 举例2.3 原理3、redo日志3.1 作用3.2 举例3.3 原理1、前言为了实现事务的原子性和持久性,mysql引入了undo和redo日志(即undo log和redo log)。本篇博客来讲解下undo和redo的概念,以及mysql如何利用undo和redo进行异常宕机恢复。2、undo日志2.1 作用un...转载 2020-03-31 18:55:10 · 578 阅读 · 0 评论 -
Mysql数据库常用的事务隔离级别都有哪些?都是什么原理?
什么是事务隔离?任何支持事务的数据库,都必须具备四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务...转载 2020-03-25 09:17:46 · 372 阅读 · 0 评论 -
B-树,B+树,B*树详解
B-树B-树是一种多路搜索树(并不一定是二叉的)1970年,R.Bayer和E.mccreight提出了一种适用于外查找的树,它是一种平衡的多叉树,称为B树(或B-树、B_树)。一棵m阶B树(balanced tree of order m)是一棵平衡的m路搜索树。它或者是空树,或者是满足下列性质的树:1、根结点至少有两个子女;2、每个非根节点所包含的关键字个数 j 满足:┌m...转载 2020-03-12 09:39:13 · 359 阅读 · 0 评论 -
Mysql数据库常用的事务隔离级别都有哪些?都是什么原理?
什么是事务隔离?任何支持事务的数据库,都必须具备四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务...转载 2020-03-10 16:02:57 · 151 阅读 · 0 评论 -
Mysql 有数据更新 无数据插入 ON DUPLICATE KEY UPDATE
如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果:INSERT INTO TABLE (a,c) V...原创 2020-01-10 14:36:16 · 453 阅读 · 0 评论 -
【Java】Java中的JDBC
【什么叫JDBC?】JDBC为Java开发者使用数据库提供了统一编程接口,它由一组Java类和接口组成。是Java程序与数据库系统通信的标准API。JDBC API使得开发人员可以使用纯java的方式来连接数据库,并执行操作。【JDBC的操作】在进行JDBC 操作的时候可以按照以下的步骤完成:1、加载数据库驱动程序,加载的时候需要将驱动程序配置到class原创 2016-03-22 19:15:10 · 551 阅读 · 4 评论 -
【数据库】MySQL的卸载
【前言】MySQL的卸载是个很头疼的问题,我们常常会因为卸载不干净导致重新安装无法进行。MySQL的卸载无形中浪费了我们很多宝贵的时间,下面是我卸载的全过程、感觉还是挺实用的。第一步:打开控制面板、找到MySQL,将其卸载。第二步:删除安装目录下的的my.ini文件及所有文件。第三步:Windows +R 运行“regedit”文件,打开注册表编辑器。1、原创 2016-05-28 22:48:20 · 1722 阅读 · 6 评论 -
【MySQL】Linux中连接MySql数据库并改变MySql的编码集
【第一步】连接Linux中的MySql数据库。一般mysql默认都是GBK编码,这时候我们需要把GBK改为UTF8编码格式。用Linux可视化连接工具或者直接在Linux命令窗口,输入命令开启mysql。 mysql - u 用户名 -p输入命令:show variables like '%character%'; 查看mysql编码集【第二步】原创 2016-10-28 22:00:34 · 385 阅读 · 4 评论 -
四种高效数据库设计思想——提高查询效率
【开篇】设计数据库表结构时,我们首先要按照数据库的三大范式进行建立数据库。 1. 1NF每列不可拆分 2. 2NF确保每个表只做一件事情 3. 3NF满足2NF,消除表中的依赖传递。 三大范式的出现是在上世纪70年代,由于内存资源比较昂贵,所以严格按照三大范式进行数据库设计。而如今内存变得越来越廉价,在考虑效率和内存的基础上我们可以做出最优选择以达到最高效率。建立数据库原创 2016-12-11 16:54:13 · 10094 阅读 · 1 评论 -
java程序连接数据库并批量执行.sql文件
在做软件安装程序的时候;数据库信息都是我们自己配的,配完之后连接数据库-->执行我们准备好的指定的sql文件建表建库。我们这里主要用到的方法是:mybatis ScriptRunnerimport org.apache.commons.configuration.Configuration;import org.apache.commons.configuration.Properti原创 2017-04-12 17:57:16 · 3998 阅读 · 1 评论 -
Linux 安装 utf8mb4格式的mysql
1. Mysql安装1. yum -yinstall zlib zlib-devel bzip2 bzip2-devel openssl openssl-devel xz-libs gccgcc-c++ pcre pcre-devel zlib libeventopenssl-clients nfs-utils rpcbind rsync ntpdate libselinux-python原创 2017-05-12 18:56:58 · 1352 阅读 · 3 评论 -
教你如何定位及优化SQL语句的性能问题
在现如今的软件开发中,关系型数据库是做数据存储最重要的工具。无论是Oracale还是Mysql,都是需要通过SQL语句来和数据库进行交互的,这种交互我们通常称之为CRUD。在CRUD操作中,最最常用的也就是Read操作了。而对于不同的表结构,采用不同的SQL语句,性能上可能千差万别。本文,就基于MySql数据库,来介绍一下如何定位SQL语句的性能问题。 对于低性能的SQL语句的定位,最重要...转载 2018-12-09 16:53:04 · 245 阅读 · 0 评论 -
8中sql的错误用法
文章转自https://mp.weixin.qq.com/s/LKrYfAQKBojezHewdNh4rw1、LIMIT 语句分页查询是最常用的场景之一,但也通常也是最容易出问题的地方。比如对于下面简单的语句,一般 DBA 想到的办法是在 type, name, create_time 字段上加组合索引。这样条件排序都能有效的利用到索引,性能迅速提升。SELECT * FROM ...转载 2019-05-31 10:52:52 · 167 阅读 · 0 评论 -
Mysql设置慢查询日志
关于MySQL你知道这些吗?MySQL是典型的三层架构模式,在平常使用中对MySQL问题排查和优化,也应该针对具体问题,从对应的层解决问题 服务层:经典的C/S架构,主要是处理连接和安全验证。 核心层:处理MySQL核心业务。 查询分析,优化,缓存和内置函数 。 内建的视图,存储过程,触发器。 存储引擎层:存储引擎负责数据的存储和提取。核心层通...转载 2019-09-10 10:18:39 · 264 阅读 · 0 评论 -
【数据库】MySQL基本语句的使用
一、DDL:数据定义语言作用:用于描述数据库中要存储的现实世界实体的语言。即创建数据库和表的结构。常用关键字:CREATE ALTER DROP TRUNCATE-----------------------------库操作-----------------------------显示所有的数据库SHOW DATABASES;创建一个名称为mydb1的数据库。CR原创 2016-04-08 16:07:27 · 828 阅读 · 1 评论