![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
走在小路
行走在路上
展开
-
一个简单的Mysql查询
最近工作上遇到一个“神奇”的问题,或许对大家有帮助,因此形成本文。问题大概是,我有两个表 TableA,TableB,其中 TableA 表大概百万行级别(存量业务数据),TableB 表几行(新业务场景,数据还未膨胀起来)。image语义上 TableA.columnA=TableB.columnA,其中 columnA 上建立了索引,但查询的时候确巨慢无比,基本上到 5-6 秒,明显跟预期不符合。下面我以一个具体的例子来说明,模拟其中的 SQL 查询场景。场景重现user_in转载 2020-07-18 14:46:28 · 698 阅读 · 0 评论 -
You must reset your password using ALTER USER statement before executing this statement.
登陆成功后输入命令的时候,发现总是提示:You must reset your password using ALTER USER statement before executing this statement.翻译过来就是:在执行此语句之前,必须使用 ALTER USER 语句重置密码。因第一次安装,给的是随机密码,登陆成功后需要第一时间改成自己的密码。第一次安装登陆后只能使用 ALTER USER 修改密码MySQL 5.7 在初始安装后(CentOS7 操作系统)会生成随机.转载 2020-07-03 08:53:31 · 2607 阅读 · 0 评论 -
MySQL启动服务提示系统找不到指定文件
Mysql启动服务:C:\Windows\system32>net start mysql发生系统错误 2。系统找不到指定的文件。怎么还是报这个错?难道不是由于配置的原因?对,不是由于上面的配置的问题,但上面的配置添加后也没有错。那是什么原因?这里是最需要注意的地方,在安装mysql服务时,一定要切换到mysql安装目录的bin目录下,不管你是否配置环境变量,否则在安装完后启动服务还是会报上面的错误。切换到bin目录后,先删除前面安装的mysql服务(删除服务不一定要到bin目录转载 2020-07-03 08:08:02 · 7623 阅读 · 2 评论 -
经典的数据库问题
一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引、如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引、如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含的)。2、数据记录本身被存于主索引(一颗B+Tree)的叶子节点上。这就要求同一个叶子节点内(大小为一个内存页转载 2020-06-28 13:55:07 · 399 阅读 · 0 评论 -
Mysql慢查询优化
开启 MySQL 慢查询日志一个起步就不简单的原因是,我们如何才能定位到那些真正形成瓶颈的慢查询。一个普通项目中的 SQL 可能就有大几十甚至上百个,而「凶手们」就藏匿其中。一个朴素的想法是在项目中每一个 SQL 执行前后打上时间戳来估计执行时间,暂且不论由于各种因素的影响这种估算可能不准确,更让人不可接受的是这对原始代码造成的极大的侵入。好在 MySQL 提供了慢查询日志。这个日志会记录所有执行时间超过 long_query_time(默认是 10s)的 SQL 及相关的信息。在 MySQ转载 2020-06-20 18:29:39 · 362 阅读 · 0 评论 -
mysql主从同步延迟
如何实现mysql读写分离基于主从复制架构,简单来说,就是搞了一个主库,挂多个从库,然后我们单单只是写主库,然后主库会自动把数据同步到从库上。mysql主从复制原理是什么主库将变更写binlog日志,然后从库连接到主库后,从库有一个IO线程,将主库的binlog日志拷贝到自己本地,写入一个中继日志中,接着从库中有一个sql线程会从中继日志读取binlog,然后执行binlog日志中的内容,也就是在自己本地再执行一遍sql,这样就可以保证自己跟主库的数据一致。这里有很重要一点,就是从库同步主库数转载 2020-06-15 14:53:07 · 275 阅读 · 0 评论 -
MySql主从同步(binlog方式)
部署环境机器A:192.168.2.63(主)机器B:192.168.2.94(从)mysql-5.6.23主(master)配置修改mysql安装目录下my.ini配置文件log_bin=mysql-bin-1 #文件名mysql-bin-1server_id=1 #服务ID,用于区分服务,范围1~2^32-1#MySQL 磁盘写入策略以及数据安全性#每次事务提交时MySQL都会把log buffer的数据写入log file,并且flush(刷到磁盘)中去innodb_fl..转载 2020-06-15 09:00:29 · 3033 阅读 · 0 评论 -
MYSQL线上数据库大表归档方法
前言作为一个企业或者DBA,我们通常会有这种想法,数据是一个公司的核心命脉,应该需要永久保存,很多时候DBA和开发沟通的时候,开发人员也会这么告诉我们,这份数据非常重要,数据需要永久保存。然而,如果将数据库的数据永久保存,那么迟早有一天,你会拥有一个非常大的数据库。作为一个DBA,通常为了业务对数据库的操作性能考虑和存储容量的考虑。我们会建议对数据库里大表进行数据归档,例如将使用的高频数据保留在当前表,对低频数据保留在归档表中。当然有些公司会将数据抽取到Hadoop、Hbase进行归档和离线分析,或者使用转载 2020-05-29 20:37:45 · 1553 阅读 · 0 评论 -
MySQL优化的几种方法
在sql查询中为了提高查询效率,我们常常会采取一些措施对查询语句进行sql优化,下面总结的一些方法,有需要的可以参考参考。1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。 2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null...转载 2020-05-29 14:14:57 · 2005 阅读 · 0 评论 -
数据库中的binlog、redolog、undolog的区别
binlog二进制日志是mysql-server层的,主要是做主从复制,时间点恢复使用redo log重做日志是InnoDB存储引擎层的,用来保证事务安全undo log回滚日志保存了事务发生之前的数据的一个版本,可以用于回滚,同时可以提供多版本并发控制下的读(MVCC),也即非锁定读。select如果没有特定加锁的话就是快照读,用到了undolog,而insert delete和update都是当前读,与这个日志关系不大。redo logredo log在事务没有提交前,每一个修改操作都.转载 2020-05-24 08:25:21 · 5953 阅读 · 1 评论 -
Druid数据库连接池的两种简单使用方式
阿里巴巴推出的国产数据库连接池,据网上测试对比,比目前的DBCP或C3P0数据库连接池性能更好简单使用介绍Druid与其他数据库连接池使用方法基本一样(与DBCP非常相似),将数据库的连接信息全部配置给DataSource对象。下面给出2种配置方法实例:1. 纯Java代码创建DruidDataSource dataSource = new DruidDataSource...转载 2020-04-21 08:50:47 · 240 阅读 · 0 评论 -
事务的几个特性和隔离级别
【摘要】 1、面试题事务的几个特点是什么?数据库事务有哪些隔离级别?MySQL的默认隔离级别?2、面试官心里分析用mysql开发的三个基本面:存储引擎、索引,然后就是事务,你必须得用事务。因为一个业务系统里,肯定要加事务保证一堆关联操作,要么一起成功要么一起失败,对不对?所以这是聊数据库必问的一个问题最最最基本的用mysql来开发,就3点:存储引擎(了解),索引(能建索引,写的SQL都用......转载 2020-03-31 09:00:27 · 343 阅读 · 0 评论 -
基于注解的Spring多数据源的配置和使用
前一段时间研究了一下spring多数据源的配置和使用,为了后期从多个数据源拉取数据定时进行数据分析和报表统计做准备。由于之前做过的项目都是单数据源的,没有遇到这种场景,所以也一直没有去了解过如何配置多数据源。后来发现其实基于spring来配置和使用多数据源还是比较简单的,因为spring框架已经预留了这样的接口可以方便数据源的切换。先看一下spring获取数据源的源码:可以看到Abst...转载 2020-01-06 14:10:00 · 192 阅读 · 0 评论 -
数据库连接池的原理
这次我们采取技术演进的方式来谈谈数据库连接池的技术出现过程及其原理,以及当下最流行的开源数据库连接池jar包。# 早期我们怎么进行数据库操作1.原理:一般来说,java应用程序访问数据库的过程是:①装载数据库驱动程序;②通过jdbc建立数据库连接;③访问数据库,执行sql语句;④断开数据库连接。2.代码// 查询所有用户...转载 2019-12-26 09:01:00 · 104 阅读 · 0 评论 -
mysql的索引结构
前言Hello我又来了,快年底了,作为一个有抱负的码农,我想给自己攒一个年终总结。自上上篇写了手动搭建Redis集群和MySQL主从同步(非Docker)和上篇写了动手实现MySQL读写分离and故障转移之后,索性这次把数据库中最核心的也是最难搞懂的内容,也就是索引,分享给大家。这篇博客我会谈谈对于索引结构我自己的看法,以及分享如何从零开始一层一层向上最终理解索引结构。从一个简单的...转载 2019-12-25 14:22:49 · 442 阅读 · 1 评论 -
什么是mysql主从同步
什么是MySQL主从同步数据是一个应用至关重要的一部分。从目的出发,主从同步有那么点备份的意思,主库(Master)将自己库中的写入同时同步给自己的从库(Slave),当主库发生某些不可预知的状况,导致整个服务器无法使用时,由于从库中也有一份数据,所以数据可以做到快速恢复,不造成或者减少造成数据的损失。当然,这只是第一个层面,如果主从库的作用仅限于此,那么我个人认为没有必要分为两个数据库,...转载 2019-12-25 10:32:09 · 1272 阅读 · 1 评论 -
数据库的分库分表
数据切分关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到 1000W 或 100G 以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定...转载 2019-12-24 17:21:03 · 151 阅读 · 0 评论 -
mysql数据库优化
前言数据库优化一方面是找出系统的瓶颈,提高MySQL数据库的整体性能,而另一方面需要合理的结构设计和参数调整,以提高用户的相应速度,同时还要尽可能的节约系统资源,以便让系统提供更大的负荷.1. 优化一览图2. 优化笔者将优化分为了两大类,软优化和硬优化,软优化一般是操作数据库即可,而硬优化则是操作服务器硬件及参数设置.2.1 软优化2.1.1 查询语句优化1.首先我...转载 2019-12-24 15:46:25 · 90 阅读 · 0 评论 -
一次 MySQL 分表踩坑实践的探讨
前言之前不少人问我“能否分享一些分库分表相关的实践”,其实不是我不分享,而是真的经验不多????;和大部分人一样都是停留在理论阶段。不过这次多少有些可以说道了。先谈谈背景,我们生产数据库随着业务发展量也逐渐起来;好几张单表已经突破亿级数据,并且保持每天 200+W 的数据量增加。而我们有些业务需要进行关联查询、或者是报表统计;在这样的背景下大表的问题更加突出(比如一个查询功能需要跑好几分...转载 2019-12-16 17:21:55 · 178 阅读 · 1 评论 -
使用mysql自带工具mysqldump进行全库备份以及source命令恢复数据库
mysql数据库提供了一个很好用的工具mysqldump用以备份数据库,下面将使用mysqldump命令进行备份所有数据库以及指定数据库一、mysqldump一次性备份所有数据库数据/usr/local/mysql/bin/mysqldump -u用户名 -p密码 --all-databases > /保存路径/文件名.sql注意:以上命令直接在控制台输入即可,无须登录进入...转载 2019-12-13 21:43:04 · 365 阅读 · 0 评论 -
手把手教你实现mysql读写分离+故障转移
前言上一篇发了手动搭建Redis集群和MySQL主从同步(非Docker)之后,很多同学对文中主从结构提到的读写分离感兴趣,本打算在双十一期间直接把读写分离分享给大家,奈何工作一直没停下,所以这周抽空把这些分享出来。关于MySQL的读写分离的实现,有两种方式,第一种方式即我们手动在代码层实现逻辑,来解析读请求或者写请求,分别分发到不同的数据库中,实现读写分离;第二种方式就是基于MyCat中...转载 2019-12-06 10:12:53 · 976 阅读 · 2 评论 -
mysql用limit为什么会影响性能
一,前言首先说明一下MySQL的版本:mysql> select version();+-----------+| version() |+-----------+| 5.7.17 |+-----------+1 row in set (0.00 sec)表结构:mysql> desc test;+----...转载 2019-12-05 09:09:37 · 1441 阅读 · 0 评论 -
如何设计可以动态扩容缩容的分库分表方案
停机扩容(不推荐)这个方案就跟停机迁移一样,步骤几乎一致,唯一的一点就是那个导数的工具,是把现有库表的数据抽出来慢慢倒入到新的库和表里去。但是最好别这么玩儿,有点不太靠谱,因为既然分库分表就说明数据量实在是太大了,可能多达几亿条,甚至几十亿,你这么玩儿,可能会出问题。从单库单表迁移到分库分表的时候,数据量并不是很大,单表最大也就两三千万。那么你写个工具,多弄几台机器并行跑,1小...转载 2019-11-29 10:04:47 · 88 阅读 · 0 评论 -
高性能数据库--读写分离
读写分离的基本原理是将数据库读写操作分散到不同的节点上。读写分离的基本实现: 搭建主从集群。 master 负责写操作,slave 负责读操作。 master 通过复制将数据同步到 slave,每台数据库都存储了所有的业务数据。 业务服务器将写操作发送给 master,将读操作发送给 slave。 "主从" 与 "主备" 的区别:“主从” 的 ...转载 2019-11-29 09:56:47 · 270 阅读 · 0 评论 -
mysql主从复制原理
mysql主从复制 灵活一主一从 主主复制 一主多从---扩展系统读取的性能,因为读是在从库读取的; 多主一从---5.7开始支持 联级复制---用途及条件mysql主从复制用途实时灾备,用于故障切换 读写分离,提供查询服务 备份,避免影响业务主从部署必要条件:主库开启binlog日志(设置log-bin参数) 主从server-id...转载 2019-11-27 10:32:01 · 185 阅读 · 0 评论 -
Windows Mysql8:(超详细)主从数据与结构同步配置
1. 确保两个mysql服务同时运行2. 上一篇中两个my.ini文件是不需要修改的,已经配置好了,接下来只需要在mysql命令行关联两个服务即可3. 我用的是Navicat,打开,连接上mysql,按F6打开软件内的命令行,或右键打开。4. 因为my.ini已配置好,所以已经存在主从关系,敲命令查看主库状态:show master status;注意:这个窗口不要...转载 2019-11-26 20:37:50 · 393 阅读 · 0 评论 -
Windows Mysql8:(超详细)同ip运行两个mysql服务
主库安装:1. mysql目前最新版是8.x.x,本文章使用mysql-8.0.15-winx64。下载免安装版注意:如果你电脑中存在mysql的环境变量,若想同时运行两个mysql服务,一定要将其删掉!!2. 解压后是这样的注意:mysql8没有提供my.ini,也没有my-default.ini。自己创建一个即可。为主库添加以下配置:[mysqld]#...转载 2019-11-26 16:32:45 · 615 阅读 · 0 评论 -
mysql8 :客户端连接caching-sha2-password问题
问题:caching-sha2-password处理:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密规则ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'p...转载 2019-11-26 16:02:03 · 74 阅读 · 0 评论 -
如何解决安装mysql后根目录没有MY.ini本地配置文件
**系统环境WIN10安装mysql后在安装目录下没有my.ini文件 。 (我的是后来复制粘贴过去的。)**在 安装目录的顶层目录(以我的为例,我的就在c盘的根目录) 中找到 program data 文件夹(该文件夹默认为隐藏文件夹)...转载 2019-11-26 15:13:15 · 2164 阅读 · 0 评论 -
window下安装mysql图文教程详解
MySQL安装说明MySQL是一个关系型数据库管理系统,由瑞典MySQL AB 公司开发,目前属于Oracle旗下产品。MySQL 是最流行的关系型数据库管理系统之一,在 WEB 应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统) 应用软件。MySQL是一种关系数据库管理系统,关系数据库将数据保存在不同的...转载 2019-11-26 13:41:39 · 407 阅读 · 0 评论 -
window下MYSQL安装配置指南
安装环境Windows 版本:Windows 10 专业版 64bit MySQL 版本:MySQL 5.7.16Tip在安装 MySQL 前请务必确认自己电脑的 net 指令是正常工作的。有些 Windows 系统会丢失 net 指令(环境变量缺失),解决方法请自行搜索一下。配置过程下载 MySQL Community Server 下载链接 选择合适自己操作系统的...转载 2019-11-26 11:01:22 · 140 阅读 · 0 评论 -
数据库架构中的基本概念
一、单库架构单库架构,是业务初期最常见的数据库架构。 user-service:用户中心服务,对调用者提供友好的RPC接口 user-db:一个库进行数据存储 二、分组架构数据库分组架构,即最常见的一主多从,主从同步,读写分离数据库架构: user-service:依旧是用户中心服务 user-db-M(master):主库,提供数据库写服...转载 2019-11-26 08:59:25 · 1529 阅读 · 0 评论 -
count(1)、count(*) 与 count(列名) 的执行区别
执行效果:1. count(1) and count(*)当表的数据量大些时,对表作分析之后,使用count(1)还要比使用count(*)用时多了!从执行计划来看,count(1)和count(*)的效果是一样的。但是在表做过分析之后,count(1)会比count(*)的用时少些(1w以内数据量),不过差不了多少。如果count(1)是聚索引,id,那肯...转载 2019-11-26 08:49:56 · 151 阅读 · 0 评论 -
mybatis中的事务管理
1.说到数据库事务,人们脑海里自然不自然的就会浮现出事务的四大特性、四大隔离级别、七大传播特性。四大还好说,问题是七大传播特性是哪儿来的?是Spring在当前线程内,处理多个数据库操作方法事务时所做的一种事务应用策略。事务本身并不存在什么传播特性,不要混淆事务本身和Spring的事务应用策略。(当然,找工作面试时,还是可以巧妙的描述传播特性的)2.一说到事务,人们可能又会想起creat...转载 2019-11-25 09:46:42 · 598 阅读 · 0 评论 -
SQL性能优化梳理
前言本文主要针对的是关系型数据数据库MySql。键值类数据库可以参考:https://www.jianshu.com/p/098a870d83e4先简单梳理下Mysql的基本概念,然后分创建时和查询时这两个阶段的优化展开。1 基本概念简述1.1 逻辑架构 第一层:客户端通过连接服务,将要执行的sql指令传输过来 第二层:服务器解析并优化sql,生成...转载 2019-11-23 10:07:56 · 295 阅读 · 0 评论 -
MySQL 索引优化分析:为啥你的SQL慢?为啥你建的索引常失效?
为什么你写的sql查询慢?为什么你建的索引常失效?通过本章内容,你将学会MySQL性能下降的原因,索引的简介,索引创建的原则,explain命令的使用,以及explain输出字段的意义。这些内容将帮助你了解索引,分析索引,使用索引,从而写出更高性能的sql语句。还在等啥子?案例分析我们先简单了解一下非关系型数据库和关系型数据库的区别。MongoDB是NoSQL中的一种。NoSQ...转载 2019-11-22 22:35:56 · 379 阅读 · 0 评论 -
mysql数据库索引原理
索引,相信大多数人已经相当熟悉了,很多人都知道 MySQL 的索引主要以 B+ 树为主,但是要问到为什么用 B+ 树,恐怕很少有人能把前因后果讲述完整。本文就来从头到尾介绍下数据库的索引。索引是一种数据结构,用于帮助我们在大量数据中快速定位到我们想要查找的数据。索引最形象的比喻就是图书的目录了。注意这里的大量,数据量大了索引才显得有意义,如果我想要在[1,2,3,4] 中找到...转载 2019-11-19 21:09:24 · 79 阅读 · 0 评论 -
mysql中的锁-表锁和行锁
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。概述 相对其他数据库而言,MySQL的锁机制比...转载 2019-11-19 17:02:24 · 82 阅读 · 0 评论 -
一次分表踩坑实践的探讨
前言之前不少人问我“能否分享一些分库分表相关的实践”,其实不是我不分享,而是真的经验不多????;和大部分人一样都是停留在理论阶段。不过这次多少有些可以说道了。先谈谈背景,我们生产数据库随着业务发展量也逐渐起来;好几张单表已经突破亿级数据,并且保持每天 200+W 的数据量增加。而我们有些业务需要进行关联查询、或者是报表统计;在这样的背景下大表的问题更加突出(比如一个查询功能需要跑好几分...转载 2019-11-15 14:17:36 · 101 阅读 · 0 评论 -
分库分表实践
背景前不久发过两篇关于分表的文章:一次分表踩坑实践的探讨 分表后需要注意的二三事从标题可以看得出来,当时我们只做了分表;还是由于业务发展,截止到现在也做了分库,目前看来都还比较顺利,所以借着脑子还记得清楚来一次复盘。先来回顾下整个分库分表的流程如下:整个过程也很好理解,基本符合大部分公司的一个发展方向。很少会有业务一开始就会设计为分库分表,虽说这样会减...转载 2019-11-15 14:01:34 · 148 阅读 · 0 评论