• 为什么MongoDB使用B-Tree,Mysql使用B+Tree ?

    除了 B+ 树,你可能还听说过 B 树、 B- 树,实际上, B- 树就是 B 树,英文翻译都是 B-Tree ,这里的 “-” 并不是相对 B+ 树中的 “+” ,而只是一个连接符。而 B 树实际上是低级版的B+ 树,或者说 B+ 树是 B 树的改进版。B+ treeB+ tree 实际上是一颗m叉平衡查找树(不是二叉树)平衡查找树定义:树中任意一个节点的左右子树的高度相差不...

    MySQL 2020年04月26日 1713 0
  • mysql数据库如何进行备份和恢复

    一、确保mysql开启了binlog日志功能在/etc/my.cnf文件里的[mysqld]区块添加:#这个是存储的位置为mysql配置文件的位置log-bin=mysql-bin然后重启mysql服务生效二、创建数据库先创建一个ops数据库create database ops;use ops;创建一个customers表并写上表结构create table customer...

    MySQL 2020年04月26日 1662 0
  • MySQL的binlog知识梳理

    1、binlog概念:binlog是一个二进制格式的文件,用于记录“修改数据或可能引起数据变更”的SQL语句(查询的SQL不会记录)。2、binlog功能:(1)恢复: 利用binlog日志恢复数据库数据。(2)复制: 主从架构通过binlog同步数据。(3)审计: 可以用binlog中的信息进行审计,判断是否有对数据库进行注入攻击。3、binlog的记录格式:(1)state...

    MySQL 2020年04月25日 1501 0
  • 分库、分表、分区的区别

    一.分分合合说过很多次,不要拘泥于某一个技术的一点,技术是相通的。重要的是编程思想,思想是最重要的。当数据量大的时候,需要具有分的思想去细化粒度。当数据量太碎片的时候,需要具有合的思想来粗化粒度。1.1 分很多技术都运用了分的编程思想,这里来举几个例子,这些都是分的思想集中式服务发展到分布式服务从Collections.synchronizedMap(x)到1.7Concurr...

    MySQL 2020年04月22日 1552 0
  • MySQL性能优化必知:长连接、短连接、连接池

    当数据库服务器和客户端位于不同的主机时,就需要建立网络连接来进行通信。客户端必须使用数据库连接来发送命令和接收应答、数据。通过提供给客户端数据库的驱动指定连接字符串后,客户端就可以和数据库建立连接了。可以查阅程序语言手册来获知通过何种方式使用短连接、长连接。1. 短连接短连接是指程序和数据库通信时需要建立连接,执行操作后,连接关闭。短连接简单来说就是每一次操作数据库,都要打开和...

    MySQL 2020年04月21日 1717 0
  • mysql读写分离原理及配置

    1 复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础。将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重新执行一遍来实现的。复制过程中一个服务器充当主服务器,而一个或多个其它服务器充当从服务器。主服务器将更新写入二进制日志文件,并维护文件的一个索引以跟踪日志循环。这些日志可以记录发送...

    MySQL 2020年04月20日 1940 0
  • MySQL大表优化方案——从单表优化到分表分库

    单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:字段尽量使用TINYINT、SMALLINT、MEDIUM_INT作为整数类型而非INT,如果非负则加上U...

    MySQL 2020年04月19日 4219 0
  • 了解数据库类型及MySQL数据库常用命令行

    一、数据库1、数据库DataBase(DB):存储数据的仓库。2、数据库的分类(1) 关系型数据库(sql数据库):中型:mysql(端口号3306)、sql server大型:Oracle(端口号1521)(2) 非关系型数据库(no-sql数据库)MongoDB、Redis3、mysql软件:Sql yog:数据库客户端工具(图形用户界面工具)方便操作数据库。类似的工具:N...

    MySQL 2020年04月19日 1328 0
  • 很用心的为你写了 9 道 MySQL 面试题

    MySQL 一直是本人很薄弱的部分,后面会多输出 MySQL 的文章贡献给大家,毕竟 MySQL 涉及到数据存储、锁、磁盘寻道、分页等操作系统概念,而且互联网对 MySQL 的注重程度是不言而喻的,后面要加紧对 MySQL 的研究。写的如果不好,还请大家见谅。非关系型数据库和关系型数据库区别,优势比较非关系型数据库(感觉翻译不是很准确)称为 NoSQL,也就是 Not Only...

    MySQL 2020年04月18日 1295 0
  • 一份完整的 MySQL 开发规范,进大厂必看

    一、数据库命令规范1、所有数据库对象名称必须使用小写字母并用下划线分割2、所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)3、数据库对象的命名要能做到见名识意,并且最后不要超过32个字符4、临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀5、所有存储相同数据的列名和列类型必须一致(...

    MySQL 2020年04月18日 1370 0
  • MySql:阿里云Yum安装MySql 8.0,并配置用户及权限,极简操作!

    这是一篇结合官网文档,实际操作的图文笔记Yum命令 安装MySql下载MySql Yum存储库,选择对应的版本(以Centos 7 为例 选择EL7的)以wget命令为例(在local下新建一个mysql文件夹,将rpm文件下载到该路径下)#进入local文件夹cd /usr/local/#创建mysql文件夹(下载到其他地方也可以,下载到这里是为了方便管理)mkdir mys...

    MySQL 2020年04月17日 1809 0
  • Mysql -乐观锁和悲观锁

    悲观锁介绍(百科):悲观锁,正如其名,它指的是对数据被外界(包括本系统当前的其他事务,以及来自外部系统的事务处理)修改持保守态度,因此,在整个数据处理过程中, 将数据处于锁定状态。悲观锁的实现,往往依靠数据库提供的锁机制(也只有数据库层提供的锁机制才能真正保证数据访问的排他性,否则,即使在本系统中实现了 加锁机制,也无法保证外部系统不会修改数据)。使用场景举例:以MySQL I...

    MySQL 2020年04月17日 1268 0
  • mysql如何捕捉慢日志查询

    慢日志查询日志查询超过变量 long_query_time指定时间值的为慢查询,但是查询获取锁(包括锁等待)的时间不计入查询时间内,mysql 记录慢查询日志是在查询执行完毕且已经完全释放锁之后才记录,因为慢查询日志的记录顺序和执行sql的顺序可能不一致,注意 mysql5.1之后就支持微秒级的慢查询,对于dba而言一个查询0.5秒和运行0.05秒是非常不同的,前者可能索引使用...

    MySQL 2020年04月15日 1561 0
  • MySQL 8.0来了,大势所趋,逆之者亡

    MySQL 8.0它lei了,大势浩浩荡荡,谁也挡不住MySQL被Sun收购后,搞了个过渡的6.0版本,没多久就下线了(有一次居然听说有人在线上用6.0版本,我惊得下巴都掉了)。被Oracle收购后,终于迎来了像样的5.6版本,之后就是5.7、8.0版本。这么看来,Sun的衰亡不无道理。P.S,上面说了6.0版本号已被用过,7.x系列版本专用于NDB Cluster,因而新版本...

    MySQL 2020年04月15日 8381 0
  • 手把手教你分析Mysql死锁问题

    前言前几天跟一位朋友分析了一个死锁问题,所以有了这篇图文详细的博文,哈哈~发生死锁了,如何排查和解决呢?本文将跟你一起探讨这个问题准备好数据环境模拟死锁案发分析死锁日志分析死锁结果环境准备数据库隔离级别:mysql> select @@tx_isolation;+-----------------+| @@tx_isolation |+-----------------...

    MySQL 2020年04月14日 1301 0
  • Docker常用镜像安装:MySql Redis GitLab maven私服等

    学习Docker的过程就是安装各种镜像、环境搭建的过程。下面是常用Docker公共镜像的安装方式,记录下来,环境收藏~一、安装Mysql1.创建mysql下载镜像:docker pull centos/mysql-57-centos7创建容器:docker run -di --name=mysql --restart=always -p 3306:3306 -e MYSQL_R...

    MySQL 2020年04月13日 2097 0
  • 非常重要的mysql数据库定时备份!

    数据是非常重要的,所以数据备份必不可少!比如受到攻击,或者人为误操作时,备份数据就派上用场,及时恢复数据,将影响降到最低。下面以mysql为例,利用mysqldump(mysql自带工具)工具进行备份,实现每天整点定时备份数据库(定时是利用linux的crontab,可以自己配置任意时间),并且只保留7天(时间可配置)假设数据库名为:test第一步.创建脚本文件夹mkdir /...

    MySQL 2020年04月12日 2142 0
  • 程序员经典面试题,Mysql并发读写的时候,都是需要加锁的么?

    这是一道经典的程序员面试题,在Mysql中,如果有多个事务同时访问同一行数据,那么需要加锁么?我们都知道,在Mysql中有行锁,如果有多个事务同时修改同一行数据,那么需要加锁来防止并发问题。那么,如果有事务修改数据,又有事务读取这个数据,需要加锁么?答案是不一定,事实上,Mysql的很多数据库引擎为了提升并发性能,都做了多版本并发控制,也就是我们常说的MVCC,事实上,除了My...

    MySQL 2020年04月12日 1621 0
  • mysql5.7 使用XtraBackup2.4 全量备份还原

    下载 XtraBackupmysql5.7我们使用 XtraBackUp2.4版本 下面是网址下载文件为 percona-xtrabackup-24-2.4.9-1.el7.x86_64.rpm进行安装预先安装 libev perl-DBD-MySQL perl-Digest-MD5yum -y install libevyum -y install perl-DBD-MySQ...

    MySQL 2020年04月11日 4133 0
  • MySQL默认值选型是空,还是 NULL-爱可生

    如果对一个字段没有过多要求,是使用“”还是使用 NULL,一直是个让人困惑的问题。即使有前人留下的开发规范,但是能说清原因的也没有几个。NULL 是“”吗?在辨别 NULL 是不是空的这个问题上,感觉就像是在证明 1 + 1 是不是等于 2。在 MySQL 中的 NULL 是一种特殊的数据。一个字段是否允许为 NULL,字段默认值是否为 NULL。主要有如下几种情况:字段类型表...

    MySQL 2020年04月11日 2753 0
  • 程序员最常犯的MySQL错误

    1、使用MyISAM而不是InnoDBMySQL有很多数据库引擎,但是你最可能碰到的就是MyISAM和InnoDB。MySQL 默认使用的是MyISAM。但是,很多情况下这都是一个很糟糕的选择,除非你在创建一个非常简单抑或实验性的数据库。外键约束或者事务处理对于数据完整性 是非常重要的,但MyISAM都不支持这些。另外,当有一条记录在插入或者更新时,整个数据表都被锁定了,当使用...

    MySQL 2020年04月11日 1200 0
  • 手把手教你SQL注入

    什么是SQL注入?SQL注入指的数据库将用户输入的数据当作SQL语句执行,从而对数据库进行任意的操作达到攻击的目的。这里的“用户”一般是指发现网站漏洞并构造合法的SQL语句对网站进行攻击的人。怎么导致SQL注入?SQL注入有两个关键的条件:用户能够控制输入、代码中SQL语句对用户输入的数据进行拼接。如下:String sql="select * from user where ...

    MySQL 2020年04月11日 1494 0
  • 巧用SQL拼接语句

    前言:在日常数据库运维过程中,可能经常会用到各种拼接语句,巧用拼接SQL可以让我们的工作方便很多,达到事半功倍的效果。本篇文章将会分享几个日常会用到的SQL拼接案例,类似的SQL还可以举一反三,探索出更多的可能性哦。_注意_:适用于5.7版本,其他版本可能稍许不同。1.CONCAT函数介绍授人以鱼不如授人以渔,拼接SQL主要用到的是CONCAT函数,我们先来介绍下该函数的用法。...

    MySQL 2020年04月10日 2279 0
  • 解读MySQL行锁和表锁的含义及区别

    一、前言对于行锁和表锁的含义区别,在面试中应该是高频出现的,我们应该对MySQL中的锁有一个系统的认识,更详细的需要自行查阅资料,本篇为概括性的总结回答。MySQL常用引擎有MyISAM和InnoDB,而InnoDB是mysql默认的引擎。MyISAM不支持行锁,而InnoDB支持行锁和表锁。如何加锁?MyISAM在执行查询语句(SELECT)前,会自动给涉及的所有表加读锁,在...

    MySQL 2020年04月10日 1936 0
  • 永远不要在MySQL中使用utf8,要改用utf8mb4

    Mysql 中的 utf8 是假的UTF-8,utf8mb4才是正牌UTF-8用 utf8mb4 就完事了MySQL的"utf8"不是UTF-8。MySQL中的“utf8”只支持每个字符最多三个字节,而真正的UTF-8是每个字符最多四个字节。MySQL 开发人员从未修复此错误。他们在2010年发布了一个解决方法:一个新的字符集称为"utf8mb4"。当然,他们从来没有宣传过这个...

    MySQL 2020年04月10日 1742 0
  • 彻底解决MySQL中的乱码问题

    字符集转换概述我们有必要说明一下, 字符 其实是面向人类的一个概念,计算机可并不关心字符是什么,它只关心这个字符对应的字节编码是什么。对于一个字节序列,计算机怎么知道它是使用什么字符集编码的呢?计算机不知道,所以其实在计算机中表示一个字符串时,都需要附带上它对应的字符集是什么,就像这样(以C++语言为例):class String { byte* content; ...

    MySQL 2020年04月09日 1277 0
  • mysql数据库备份及其恢复

    一、确保mysql开启了binlog日志功能在/etc/my.cnf文件里的[mysqld]区块添加:#这个是存储的位置为mysql配置文件的位置log-bin=mysql-bin然后重启mysql服务生效二、创建数据库先创建一个ops数据库create database ops;use ops;创建一个customers表并写上表结构create table customer...

    MySQL 2020年04月09日 1310 0
  • Elasticsearch:将mysql数据导入到Elasticsearch中

    因为elk(Elasticsearch,logstash,Kibana是一家的),所以使用 logstash做为作为导入工具是最好的选择。1))下载logstash https://www.elastic.co/cn/logstash2)解压后进入logstash目录3)新版本(2020/3/12,7.6.1)无需执行bin/logstash-plugin install lo...

    MySQL 2020年04月07日 5482 0
  • 分享一份大佬的MySQL数据库设计规范,值得收藏

    概述MySQL数据库与 Oracle、 SQL Server 等数据库相比,有其内核上的优势与劣势。我们在使用MySQL数据库的时候需要遵循一定规范,扬长避短。1、数据库设计以下所有规范会按照【高危】、【强制】、【建议】三个级别进行标注,遵守优先级从高到低。对于不满足【高危】和【强制】两个级别的设计,DBA会强制打回要求修改。1、库名【强制】库的名称必须控制在32个字符以内,相...

    MySQL 2020年04月02日 2015 0
  • MySQL 亿级数据量实时同步,如何完美 Hold 住

    背景MySQL 由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万 / 亿级别的时候,MySQL 的相关操作会变的非常迟缓;如果这时还有实时 BI 展示的需求,对于 MySQL 来说是一种灾难。为了解决 SQL 查询慢,查不了的业务痛点,我们探索出一套完整的实时同步,即席查询的解决方案,本文主要从实时同步的角度介绍相关工作。早期业务借助 Sqo...

    MySQL 2020年03月30日 2188 0