![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL/MariaDB
文章平均质量分 89
奋斗吧_攻城狮
JUST DO IT!
展开
-
面试必问的 MySQL,你懂了吗?
前言今天不整那些花里胡哨、虚头巴脑的前言了,直接进入正题怼起来。正文二狗:不多BB,先怼几道常问的大题目。MySQL 的事务隔离级别有哪些?分别用于解决什么问题?主要用于解决脏读、不可重复读、幻读。脏读:一个事务读取到另一个事务还未提交的数据。不可重复读:在一个事务中多次读取同一个数据时,结果出现不一致。幻读:在一个事务中使用相同的 SQL 两次读取,第二次读取到了其他事务新插入的行。不可重复读注重于数据的修改,而幻读注重于数据的插入。二狗:MySQL 的转载 2021-09-29 10:41:40 · 484 阅读 · 0 评论 -
再谈mysql锁机制及原理—锁的诠释
加锁是实现数据库并发控制的一个非常重要的技术。当事务在对某个数据对象进行操作前,先向系统发出请求,对其加锁。加锁后事务就对该数据对象有了一定的控制,在该事务释放锁之前,其他的事务不能对此数据对象进行更新操作。什么是锁?锁是计算机协调多个进程或线程并发访问某一资源的机制。 锁保证数据并发访问的一致性、有效性; 锁冲突也是影响数据库并发访问性能的一个重要因素。 锁是Mysql在服务器层和存储引擎层的的并发控制。 为什么要加锁数据库是一个多用户使用的共享资源。当多个用转载 2021-08-18 22:50:15 · 374 阅读 · 0 评论 -
MySQL中的多版本并发控制(MVCC)
概述 笔者在初次看到多版本并发控制(Multi-Version Concurrency Control, MVCC,后文统一用MVCC代替)时,看的一头雾水,尤其是《高性能MySQL》一书中对于MVCC的讲解,言语过于简略,遂通过查阅多方资料,才算大致搞懂MVCC。本文就笔者个人对于MVCC的理解进行一下比较白话文的介绍,意在用更容易理解的方式让大家明白MVCC到底是个什么东西。如有笔者理解有误的地方,恳请各位大佬指正!本文从事务的隔离性(Isolation)出发,引出并发环境下易出现的问题..转载 2020-07-27 10:55:49 · 247 阅读 · 0 评论 -
一步步分析为什么B+树适合作为索引的结构 以及索引原理 (阿里面试)
mysql的B+树索引 查找使用了二分查找,redis 跳表也使用了二分查找法,kafka查询消息日志也使用了二分查找法,二分查找法时间复杂度O(logn);参考:redis的索引底层的 跳表原理 实现聊聊Mysql索引和redis跳表 ---redis的跳表原理 时间复杂度O(logn)(阿里)参考:kafka如何实现高并发存储-如何找到一条需要消费的数据(阿里)参考:二分查找法:...转载 2019-12-13 14:53:04 · 238 阅读 · 0 评论 -
MySql基于GTID主从复制的搭建
基于GTID环境搭建主从复制1.环境----------------------------------------------------------||mysql版本 | 5.7.14 | 5.7.14 ||----------|-------------------------------------转载 2017-07-29 16:05:13 · 426 阅读 · 0 评论 -
sync_master_info
master_info_repository = TABLE. If the value of sync_master_info is greater than 0, the slave updates its master info repository table after every sync_master_info events. If it is 0, the tab转载 2017-08-07 10:29:45 · 1164 阅读 · 0 评论 -
GTID复制异常的解决步骤
GTID复制异常的解决方法,主从复制使用的是GTID方式。 下面这个环境,出问题的原因不提了。 下面是从库的截图:Retrieved_Gtid_Set:167b4197-09fa-11e7-993f-000c296a2c0d:1-6Executed_Gtid_Set:167b4197-09fa-11e7-993f-000c296a2c0d:1-5,261aa转载 2017-08-07 10:14:24 · 2276 阅读 · 0 评论 -
Ubuntu 16.04安装MySQL(5.7.18)
此篇为http://www.cnblogs.com/EasonJim/p/7139275.html的分支页。安装MySQL前需要做如下了解:1、MySQL各类型版本的区别,参考:http://www.cnblogs.com/EasonJim/p/6274344.html2、官方的下载地址一般指向最新的版本下载,如果要下载以前的版本,比如5.5.x的版本,有特殊入口,参考:http://转载 2017-08-21 23:08:46 · 2125 阅读 · 4 评论 -
pt-query-digest用法
pt-query-digest是用于分析MySQL慢查询的一个工具,它也可以分析binlog、General log、slowlog,也可以通过SHOWPROCESSLIST或者通过tcpdump抓取的mysql协议数据来进行分析。可以把分析结果输出到文件中,分析过程是先对查询语句的条件进行参数化,然后对参数化以后的查询进行分组统计,统计出各查询的执行时间、次数、占比等,可以借助分析结果找出问题进转载 2017-08-11 08:56:28 · 784 阅读 · 0 评论 -
MySQL删除重复记录
转载请注明出处:http://blog.csdn.net/l1028386804/article/details/51733585查找所有重复标题的记录:[sql] view plain copySELECT * FROM t_info a WHERE ((SELECT COUNT(*) FROM t_info WHERE Title =转载 2017-08-26 17:19:15 · 316 阅读 · 0 评论 -
关于MySQL AUDIT(审计)那点事
2017年06月02日MySQL社区版本最新版为MySQL_5.7.18,但是该版本不带AUDIT功能(MySQL Enterprise Edition自带AUDIT功能),因此需要加载plugin(第三方插件),当前插件有以下几种:1、MySQL Enterprise Audit Plugin – This plugin is not open source and is only av转载 2017-08-21 15:59:11 · 6019 阅读 · 0 评论 -
ubuntu安装MariaDB
引言:MariaDB在MySQL被Oracle收归旗下之后,开始作为Linux默认的数据库系统,这里主要描述在Ubuntu 16.04下如何来安装MariaDB的步骤。1. 安装指令sudo apt-get install software-properties-commonsudo apt-key adv --recv-keys --keyserver hkp://keyse原创 2017-08-13 11:45:31 · 1093 阅读 · 0 评论 -
优化innodb_log_file_size参数
在mysql 5.5和5.5以前innodb的logfile最大设置为4GB,在5.6以后的版本中logfile最大的可以设为512GB.innodb的logfile就是事务日志,用来在mysql crash后的恢复.所以设置合理的大小对于mysql的性能非常重要在5.5的版本中,default设置为5M.在新建的mysql服务器中,需要尽快修改该参数. logfile大小对转载 2017-08-12 16:16:28 · 564 阅读 · 0 评论 -
MYSQL备份与恢复精华篇
数据备份原理数据备份属于数据容灾保护中的内容,所有的数据备份系统设计都基于这五个元素,备份源、备份目标、传输网络、备份引擎和备份策略。用户按照需要制定备份策略,使用定时任务执行备份脚本,使用备份引擎将需要备份的的数据从备份源通过传输网络传送到备份目标。备份五元组:1、备份源需要备份的数据统一称为备份源,可以是文本数据,音视频数据,也可以是数据库数据等等。转载 2017-08-12 15:45:42 · 425 阅读 · 0 评论 -
Linux下MySQL安装与配置
安装和初始化数据库[root@localhost mysql]# bin/mysql_install_db --user=mysql --basedir=/usr/local/mysql/ --datadir=/usr/local/mysql/data/2016-06-01 15:23:25 [WARNING] mysql_install_db is deprecated. Please consider原创 2016-12-22 11:49:33 · 546 阅读 · 0 评论 -
为什么不要问我DB极限QPS/TPS
背景 相信很多开发都会有这个疑问,DB到底可以支撑多大的业务量,如何去评估?对于这个很专业的问题,DBA也没有办法直接告诉你,更多的都是靠经验提供一个看似靠谱的结果,这里主要说明数据库容量评估的难点。定性分析借用学校时候做物理题的一个思考方法 -- 极限法;我们假设两种极限场景: 极限场景一,所有SQL 都是主键等值查询。极限场景二,所有SQL 都是走不上索引的全表扫描。这两种场景转载 2017-08-10 20:16:22 · 1658 阅读 · 0 评论 -
mysql binlog日志自动清理及手动删除
当开启MySQL数据库主从时,会产生大量如mysql-bin.00000* log的文件,这会大量耗费您的硬盘空间。mysql-bin.000001mysql-bin.000002mysql-bin.000003mysql-bin.000004mysql-bin.000005…有三种解决方法:1.关闭mysql主从,关闭binlog;2.开启mysql主从,设置ex转载 2017-08-08 16:46:44 · 557 阅读 · 0 评论 -
MySQL 建表字段长度的限制
在MySQL建表时,遇到一个奇怪的现象:root@localhost : test 10:30:54>CREATE TABLE tb_test ( -> recordid varchar(32) NOT NULL, -> areaShow varchar(10000) DEFAULT NULL, -> areaShow1 varchar(10000) DEFAULT转载 2017-09-05 10:14:29 · 3173 阅读 · 0 评论 -
MySQL5.7 虚拟列实现表达式索引
MySQL自古以来就不提供函数索引这么复杂的功能。那怎么在MySQL里面实现这样的功能呢? 我们先来看看函数索引的概念。函数索引,也可称为表达式索引,也就是基于字段以特定函数(表达式)建立索引来提升查询性能之需。函数索引的优势在于更加精确的获取所需要的数据。MySQL 5.7提供了一个新的特性,虚拟列,可以很完美的解决这个问题。在介绍虚拟列之前,我们来看看在MySQL里面普通索引的转载 2017-08-30 09:47:49 · 1321 阅读 · 0 评论 -
事务的ACID是指什么
1)原子性(Atomic):事务中各项操作,要么全做要么全不做,任何一项操作的失败都会导致整个事务的失败;2)一致性(Consistent):事务结束后系统状态是一致的;3)隔离性(Isolated):并发执行的事务彼此无法看到对方的中间状态;4)持久性(Durable):事务完成后所做的改动都会被持久化,即使发生灾难性的失败。通过日志和同步备份可以在故障发生后重建数据。转载 2018-01-03 14:35:53 · 402 阅读 · 0 评论 -
Innodb锁机制和锁算法
数据库使用锁是为了支持更好的并发,提供数据的完整性和一致性。InnoDB是一个支持行锁的存储引擎,锁的类型有:共享锁(S)、排他锁(X)、意向共享(IS)、意向排他(IX)。为了提供更好的并发,InnoDB提供了非锁定读:不需要等待访问行上的锁释放,读取行的一个快照。该方法是通过InnoDB的一个特性:MVCC来实现的。InnoDB有三种行锁的算法:1,Record Lock:单个行记录上的锁...转载 2019-03-26 17:54:01 · 1035 阅读 · 0 评论 -
MYSQL中竖表和横表之间的相互转换
MYSQL中竖表和横表之间的相互转换1. 横表转为竖表表tb的结构为表中的数据为现在要求查询到如下结果使用的SQL查询语句应该如下:或者使用下面查询2. 竖表转为横表tb2表的结构如下tb2的数据如下现在想把tb2的数据变为查询的SQL语句如下:现在要求得到如下查询结果...转载 2017-06-05 18:51:20 · 749 阅读 · 0 评论 -
MYSQL中取当前周/月/季/年的第一天与最后一天
源地址:http://www.2cto.com/database/201308/240281.html#当年第一天: SELECT DATE_SUB(CURDATE(),INTERVAL dayofyear(now())-1 DAY); #当年最后一天: SELECT concat(YEAR(now()),'-12-31'); #当前week的第一天: select date转载 2017-03-03 16:08:05 · 442 阅读 · 0 评论 -
Linux下MySQL自启动
命令echo "service mysqld start" >> /etc/rc.local或者进入/etc/目录,直接vim rc.local编辑rc.local文件,在最后一行添加“service mysqld start”,保存退出 bash: /etc/rc.local: Permission denied 分析: bash 返回 /etc/...转载 2016-12-29 21:24:23 · 430 阅读 · 0 评论 -
Mysql 插入记录时检查记录是否已经存在,存在则更新,不存在则插入记录SQL
我们在开发数据库相关的逻辑过程中, 经常检查表中是否已经存在这样的一条记录, 如果存在则更新或者不做操作, 如果没有存在记录,则需要插入一条新的记录。这样的逻辑固然可以通过两条sql语句完成。SELECT COUNT(*) FROM xxx WHERE ID=xxx;if (x == 0) INSERT INTO xxx VALUES;else UPDATE xxx SET ;但是转载 2016-11-22 15:28:36 · 2486 阅读 · 0 评论 -
SELECT * ...... FOR UPDATE 锁机制
由于InnoDB预设是Row-Level Lock,InnoDB行锁是通过给索引上的索引项加锁来实现的,这一点MySQL与Oracle不同,后者是通过在数据块中对相应数据行加锁来实现的。InnoDB这种行锁实现特点意味着:只有通过索引条件检索数据,InnoDB才使用行级锁,否则,InnoDB将使用表锁! 举个例子: 假设有个表单products ,里面有id跟name二个栏位,id是主键。 例转载 2016-11-22 14:57:36 · 7998 阅读 · 0 评论 -
redo和undo日志
在数据库系统中,既有存放数据的文件,也有存放日志的文件。日志在内存中也是有缓存Log buffer,也有磁盘文件log file,本文主要描述存放日志的文件。 MySQL中的日志文件,有这么两类常常讨论到:undo日志与redo日志。1 undo1.1 undo是啥undo日志用于存放数据修改被修改前的值,假设修改 tba 表中 id=2的行数据,把Name=’B’...转载 2018-07-17 15:10:46 · 52120 阅读 · 9 评论 -
Linux下MyCat和MyCat_web的安装和配置
前言Mycat 是一个数据库分库分表中间件 Mycat web 可以对 Mycat进行监控,这里分享一下 Mycat web 的搭建过程 详细内容可以参考 官方文档 Tip: 当前的最新版本为 Mycat-web-1.0 启动顺序必须为:zookper->mycat->mycat_web,否则可能会出现问题环境依赖MySQL修改配置文件my.cnf,必须要修改才能使用myca原创 2017-01-14 17:08:33 · 9908 阅读 · 0 评论 -
数据库对象命名参考
原文,本文是一个参考,不是一个规范,更不是一个标准。它仅代表了我个人的观点和建议,并只考虑了通常条件下的规则,你可以根据实际情况随意修改它。引言编码规范是一个优秀程序员的必备素质,然而,有很多人非常注重程序中变量、方法、类的命名,却忽视了同样重要的数据库对象命名。这篇文章结合许多技术文章和资料,以及我自己的开发经验,对数据库对象的命名规则提出了一点建议,希望能为大家提供一些参考。NOT转载 2017-01-18 16:41:01 · 806 阅读 · 0 评论 -
分库设计中的主键选择
在先前的文章《又拍网架构中的分库设计》中,我有提到过MySQL分库设计中的主键选择问题。在这篇文章里我想对这个问题进行展开讨论,以此作为对上一篇文章的一个补充。前面提到又拍网采用了全局唯一的字段作为主键。比如拿照片表为例,虽然不同用户的照片数据存放在不同的Shard(或者说MySQL节点/实例, 请参考《又拍网架构中的分库设计》)上,但是每一张照片拥有整个站点唯一的ID作为标示。为什么要全转载 2017-02-21 18:52:17 · 392 阅读 · 0 评论 -
使用mycat实现mysql读写分离以及主备自动切换模式
一:软件环境Window7 Mycat-server1.6 JDK1.8 Mysql5.62台二:读写分离的好处增加了冗余(备份数据)。 读写分开,减轻机器压力,提高数据库并发。 Mycat自身不提供主从复制的功能,也不做数据备份,因此应用Mycat做读写分离,主从复制还得使用MySQL的机制。 mysql主从复制配置详见:http://blog.csdn.net/qq_3355618转载 2017-05-27 13:57:00 · 1148 阅读 · 0 评论 -
分库分表的几种常见形式
在谈论数据库架构和数据库优化的时候,我们经常会听到“分库分表”、“分片”、“Sharding”…这样的关键词。让人感到高兴的是,这些朋友所服务的公司业务量正在(或者即将面临)高速增长,技术方面也面临着一些挑战。让人感到担忧的是,他们系统真的就需要“分库分表”了吗?“分库分表”有那么容易实践吗?为此,笔者整理了分库分表中可能遇到的一些问题,并结合以往经验介绍了对应的解决思路和建议。垂直分表转载 2018-02-10 09:56:11 · 2337 阅读 · 0 评论 -
MySQL Group Replication 介绍
mysql5.7.17 GA版发布,正式推出Group Replication(组复制) 插件,通过这个插件增强了MySQL原有的高可用方案(原有的Replication方案),提供了重要的特性——多写,保证组内高可用,确保数据最终一致性。1. 背景在介绍组复制之前,我们先简单介绍传统的异步复制和半同步复制:1.1 传统复制传统mysql复制是完全异步化的复制。下图转载 2017-08-07 16:11:09 · 532 阅读 · 0 评论 -
如何导出和导入mysql数据(数据迁移)
1. 导出数据库数据 mysqldump -uroot -p dp_db > dumpout.sql 其中 root是账户名 dp_db是需要导出的数据库名称 dumpout.sql存储导出的数据 2. 将导出的数据dumpout.sql放到你的目标机器上(如果是远程目标机器的话,直接将dunmpout.sql copy到目标机器就行)。这里假设cp转载 2017-07-18 15:34:18 · 305 阅读 · 0 评论 -
MySQL5.7杀手级新特性:GTID原理与实战
https://yq.aliyun.com/articles/57731转载 2017-07-29 17:41:55 · 646 阅读 · 0 评论 -
MySQL分页的方法及优化
在我们使用查询语句的时候,经常要返回前几条或者中间某几行数据,这个时候我们就需要用到mysql为我们提供的分页功能了。分页在MySQL中使用的是LIMIT关键字,其用法如下:SELECT * FROM TABLE LIMIT [OFFSET,] ROWS | ROWS OFFSET OFFSETLIMIT 子句可以被用于强制 SELECT 语句返回指定的记录数。日常使用中,其格式一般为:limit原创 2016-12-09 21:55:31 · 1652 阅读 · 0 评论 -
MySQL SQL服务器模式
MySQL服务器可以以不同的SQL模式来操作,并且可以为不同客户端应用不同模式。这样每个应用程序可以根据自己的需求来定制服务器的操作模式。模式定义MySQL应支持哪些SQL语法,以及应执行哪种数据验证检查。这样可以更容易地在不同的环境中使用MySQL,并结合其它数据库服务器使用MySQL。你可以用--sql-mode="modes"选项启动mysqld来设置默认SQL模式。如果你想要重设,转载 2016-12-13 21:56:25 · 1083 阅读 · 0 评论 -
MySQL SET类型和ENUM类型
一、SET类型 在创建表时,就指定SET类型的取值范围。 属性名 SET('值1','值2','值3'...,'值n') 其中,“属性名”参数指字段的名称;“值n”参数表示列表中的第n个值,这些值末尾的空格将会被系统直接删除。其基本形式与ENUM类型一样。SET类型的值可以取列表中的一个元素或者多个元素的组合。取多个元素时,不同元素之间用逗号隔开。SET类型的值最多只能是有64个元素构成的组合,原创 2016-12-22 10:35:32 · 793 阅读 · 0 评论 -
MySQL小误区:关于set global sql_slave_skip_counter=N 命令的一些点
原文链接地址:背景知识1: 在主从库维护中,有时候需要跳过某个无法执行的命令,需要在slave处于stop状态下,执行 set global sql_slave_skip_counter=N以跳过命令。常用的且不易用错的是N=1的情况,但N>1时,则不那么顾名思义,本文详细介绍N的意义,及使用注意事项。 背景知识2: MySQL从库从主库上复制b转载 2017-01-04 10:10:31 · 722 阅读 · 0 评论 -
MySQL数据的主从复制、半同步复制和主主复制详解
一、MySQL复制概述 ⑴、MySQL数据的复制的基本介绍 目前MySQL数据库已经占去数据库市场上很大的份额,其一是由于MySQL数据的开源性和高性能,当然还有重要的一条就是免费~不过不知道还能免费多久,不容乐观的未来,但是我们还是要能熟练掌握MySQL数据的架构和安全备份等功能,毕竟现在它还算是开源界的老大吧! MySQL数据库支持同步复制、单向、异步复制,转载 2017-01-06 14:16:20 · 281 阅读 · 0 评论