![](https://img-blog.csdnimg.cn/20201014180756757.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据库
数据库相关
luzaichun
这个作者很懒,什么都没留下…
展开
-
InnoDB的MVCC
InnoDB的MVCC是通过每行后面保存两个隐藏的字段来实现的。一个用来记录行的创建时间,一个用来记录行的删除时间 ,存储的不是实际的时间值,而是系统版本号。每开始一个新的事物,系统版本号都会自动递增。当前事务开始时的系统版本号,将会作为该事务的版本号,用来和查询到的每行记录的版本号做比较。RR隔离级别下,MVCC具体操作:select操作InnoDB会根据以下两个条件进行检索:a. 检索数据时候,只会检索出行版本号(创建版本号)小于或等于当前事务版本号的行。这样就可确保事务读取到的行,要么实原创 2020-12-15 14:21:15 · 149 阅读 · 0 评论 -
使用python脚本实现数据库定时备份
1.前置准备安装python:https://www.linuxidc.com/Linux/2018-07/153286.htm安装sshpass:https://blog.csdn.net/qq_30553235/article/details/78711491在使用scp命令时候,可以携带密码2.准备数据库备份的python脚本import os#执行mysqldump命令,数据库备份文件暂时存放的位置if not os.path.exists('/mysqldb_backup'):原创 2020-08-06 21:02:21 · 1090 阅读 · 0 评论 -
mysql-8.隐式转换导致索引失效或查出不符合where条件结果
本篇记录工作中遇到的一些小问题,分享出来大家一起学习下。mysql中的隐式转换今天在执行一条sql语句时候,where条件写错了,但是居然查询出来了结。(如下图所示)第一反映是,mysql的优化器是不是做了什么操作,导致最后查询条件不是现在的72071003dsss,而是变成了其它的值。因为之前在一篇文章看过,如果where条件两边一边是数值类型一边是字符型mysql会做隐式转换,但是具体...原创 2020-04-29 16:05:35 · 1266 阅读 · 1 评论 -
mysql-7.字符串字段索引的优化
对于字符串字段建立索引,字段越长那么这个字段索引树占用的磁盘空间就越大,相同的数据页能放下的索引值就越少,搜索的效率也就会越低。而且伴随着表数据量的不断增大,会导致这颗索引树占用磁盘空间最后会非常大。这就需要我们根据实际业务场景来优化这个字符串字段的索引了。前缀索引例如现在有张员工表:mysql> create table t_staff(id bigint unsigned pr...原创 2020-04-09 17:05:24 · 442 阅读 · 0 评论 -
mysql-6.唯一索引和普通索引以及changebuffer
普通索引和唯一索引查询过程区别例如执行一条查询语句:select id from T where k=5 这个查询语句在索引树上查找的过程,先是通过 B+ 树从树根开始,按层搜索到叶子节点,就能取到满足k条件的id值。对于普通索引来说,查找到满足条件的第一个记录 (5,500) 后,需要查找下一个记录,直到碰到第一个不满足 k=5 条件的记录。对于唯一索引来说,由于索引定义了唯一性,查找...原创 2020-04-03 17:53:49 · 361 阅读 · 0 评论 -
mysql-5.回表、覆盖索引、最左匹配原则
回表通过上一章的介绍,我们知道索引可以分为主键索引和非主键索引。非主键索引的叶子节点存储的是主键索引的值。我们在通过非主键索引查询时候,需要先在非主键索引树找到主键值,然后再到主键索引树根据主键值去查询出整行数据,这个过程中,回到主键索引树搜索的过程,我们称为回表覆盖索引#创建一张表mysql> create table T (ID int primary key,k int ...原创 2020-03-20 19:56:49 · 600 阅读 · 0 评论 -
mysql-4.索引模型和B+树索引
讲到mysql,那么索引肯定是绕不开的话题,大家平时工作中应该也经常接触。索引,简单点概括,就是为了提高数据的查询效率,就像书的目录一样常见的索引模型:哈希索引:是一种键-值(key-value)的数据结构索引。哈希的思路很简单,把值放在数组里,用一个哈希函数把 key 换算成一个确定的位置,然后把 value 放在数组的这个位置。缺点:key的hash冲突问题;范围查询要遍历全部数据;如...原创 2020-03-19 18:38:40 · 232 阅读 · 1 评论 -
mysql-3.事务特性和隔离级别
tips:mysql中的事务实在引擎层实现的,mysql是以插件的方式支持多种引擎。但并不是所有引擎都支持事务。InnoDB支持事务,但是MyISAM就不支持。这也是为什么MyISAM会逐渐被InnoDB取代的原因。下面所有讲的事务相关的都是以InnoDB为例介绍的事务特性提到事务我们最先想到的都是事务的几个特性ACID:原子性:同一个事务里的操作是一个整体,要么都成功,要么都失败...原创 2020-03-18 16:20:42 · 100 阅读 · 0 评论 -
mysql-2.日志系统:redo log和binlog
在mysql中一条查询语句需要经过以下流程:对于一条更新语句,其实也是需要走上面的流程的(查询缓存这一步没有,上章有提到,在做更新操作时候,会清空查询缓存),只不过更新语句除了上面流程还会涉及到两个重要的日志模块redo log(重做日志)和 binlog(归档日志)redo log(重做日志)当有一条记录需要更新的时候,InnoDB 引擎就会先把记录写到 redo log里面,并更新内...原创 2020-03-17 20:52:57 · 208 阅读 · 0 评论 -
mysql-1.基础架构
首先给大家上一张图,让大家能全局,直观的了解mysql基础架构:我们可以将mysql分为两大层Server层和存储引擎层Server层包括:连接器、查询缓存、分析器、优化器、执行器等存储引擎:负责数据的存储和提取。而且是插件式的,我们可以更换选择不同的存储引擎。例如InnoDB或者MyISAM或Memory等等。我们在创建表的时候可以指定使用那种存储引擎。从mysql5.5.5版本开...原创 2020-03-17 15:03:01 · 96 阅读 · 0 评论 -
索引创建的思考
对于一个字符串字段索引来说,我们创建方式有:1.创建完整索引直接创建一个完整的索引,但是这样可能会因为字段比较大,创建的索引很占空间。你说公司有钱,不在乎空间占用?那么从另一方面说,由于由于索引很大,那么相同的数据页存放的索引越少,这样就需要读取更多的数据页到内存里,会产生更多磁盘IO,导致搜索效率降低。2 创建前缀索引这条语句意思:给表t_user建立一个索引,索引名是idx_emai...原创 2019-12-28 16:13:59 · 121 阅读 · 0 评论 -
mysql5.7 rpm-bundle安装过程及遇到的一些坑
1.去mysql官网下载安装包,然后解压tar -xvf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar解压完后会有以下包mysql-community-embedded-5.7.28-1.el7.x86_64.rpmmysql-community-libs-compat-5.7.28-1.el7.x86_64.rpmmysql-community-de...原创 2019-11-09 20:00:17 · 5781 阅读 · 0 评论 -
mycat作用
在主从结构中,实现数据库的读写分离在一主多从架构中,能对从的读进行负载均衡实现数据库的垂直拆分实现数据库的垂直拆分原创 2019-10-20 14:44:02 · 232 阅读 · 0 评论