MySQL的innodb引擎是如何实现MVCC的

innodb会为每一行添加两个字段,分别表示该行创建的版本和删除的版本,填入的是事务的版本号,这个版本号随着事务的创建不断递增。在repeated read的隔离级别(事务的隔离级别请看这篇文章)下,具体各种数据库操作的实现: select:满足以下两个条件innodb会返回该行数据: 该行的...

2018-08-22 14:12:16

阅读数:33

评论数:0

深入解析Mysql 主从同步延迟原理及解决方案

MySQL的主从同步是一个很成熟的架构,优点为:①在从服务器可以执行查询工作(即我们常说的读功能),降低主服务器压力;②在从主服务器进行备份,避免备份期间影响主服务器服务;③当主服务器出现问题时,可以切换到从服务器。相信大家对于这些好处已经非常了解了,在项目的部署中也采用这种方案。但是MySQL的...

2018-06-04 10:33:54

阅读数:52

评论数:0

悲观锁、乐观锁的区别及使用场景

定义:悲观锁(Pessimistic Lock): 每次获取数据的时候,都会担心数据被修改,所以每次获取数据的时候都会进行加锁,确保在自己使用的过程中数据不会被别人修改,使用完成后进行数据解锁。由于数据进行加锁,期间对该数据进行读写的其他线程都会进行等待。乐观锁(Optimistic Lock):...

2018-05-31 09:52:03

阅读数:313

评论数:0

数据库事务隔离级别-- 脏读、幻读、不可重复读(清晰解释)

一、数据库事务隔离级别数据库事务的隔离级别有4个,由低到高依次为Read uncommitted 、Read committed 、Repeatable read 、Serializable ,这四个级别可以逐个解决脏读 、不可重复读 、幻读 这几类问题。√: 可能出现    ×: 不会出现脏读不...

2018-02-09 10:19:23

阅读数:84

评论数:0

MySQL中MyISAM与InnoDB区别及选择

2018-02-08 10:39:13

阅读数:171

评论数:0

MySQL分区与分片的差异

要了解分区与分片之间的差异,首先我们需要知道什么是分片与分区。 分片:分片Sharding 不是一门新技术,而是一个相对简朴的软件理念。众所周知,MySQL 5 之后才有了数据表分区功能,那么在此之前,很多 mysql 的潜在用户都对 MySQL 的扩展性有所顾虑,而是否具备分区功能就成...

2018-01-23 19:55:51

阅读数:616

评论数:0

mysql into outline 导出数据到文件 --where

//导出投资数据 select *  from activity  where activity_id=62 INTO OUTFILE '/tmp/fifty_2017'  //导出18服务器少量数据的sql  mysqldump  -uroot -p12345678  ba...

2017-05-31 09:56:37

阅读数:333

评论数:0

MySQL通过binlog来恢复数据

一、什么是binlog 1、binlog基本定义:二进制日志,也成为二进制日志,记录对数据发生或潜在发生更改的SQL语句,并以二进制的形式保存在磁盘中; 二进制日志的信息: 文件位置:默认存放位置为数据库文件所在目录下 文件的命名方式: 名称为hostname-bin.xx...

2017-04-19 14:46:26

阅读数:146

评论数:0

mysql主从同步原理

//主从同步 实际上,你读的主库和从库都可以,但是写的肯定是进入到主库里,然后从库在读binlog,从库同步 binlog文件是以二进制形式保存的 主库执行 SQL 写Binglog 同步到从库执行 什么叫同步,就是insert 或者update或者delete 都会操作主库,每执...

2017-01-04 14:52:16

阅读数:246

评论数:2

mysql 性能优化方案 (转)

网 上有不少MySQL 性能优化方案,不过,mysql的优化同sql server相比,更为麻烦与复杂,同样的设置,在不同的环境下 ,由于内存,访问量,读写频率,数据差异等等情况,可能会出现不同的结果,因此简单地根据某个给出方案来配置mysql是行不通的,最好能使用 status信息对mysql...

2016-11-16 17:31:56

阅读数:174

评论数:0

MySQL查询某个字段属性值重复出现的次数

在某些时候,我们需要在MySQL中查询某个字段属性值重复的次数:   select category , count(*) AS count from publication_has_category      group by category order by count DESC     ...

2016-01-21 09:23:17

阅读数:8284

评论数:0

Mysql常见水平分表方案

根据经验,Mysql表数据一般达到百万级别,查询效率会很低,容易造成表锁,甚至堆积很多连接,直接挂掉;水平分表能够很大程度较少这些压力。 1.按时间分表 这种分表方式有一定的局限性,当数据有较强的实效性,如微博发送记录、微信消息记录等,这种数据很少有用户会查询几个月前的数据,如就可以按...

2016-01-11 10:38:32

阅读数:516

评论数:1

mysql innodb 多版本控制的实现

数据多版本是一种能够进一步提高并发的方法,它的核心原理是: (1)写任务发生时,将数据克隆一份,以版本号区分; (2)写任务操作新克隆的数据,直至提交; (3)并发读任务可以继续读取旧版本的数据,不至于阻塞;   如上图: 1. 最开始数据的版本是V0; 2. T1时刻发起了一个...

2018-09-07 17:55:41

阅读数:36

评论数:0

mysql 索引

数据库索引用于加速查询 虽然哈希索引是O(1),树索引是O(log(n)),但SQL有很多“有序”需求,故数据库使用树型索引 InnoDB不支持哈希索引 数据预读的思路是:磁盘读写并不是按需读取,而是按页预读,一次会读一页的数据,每次加载更多的数据,以便未来减少磁...

2018-09-07 17:42:52

阅读数:11

评论数:0

PDO和MySQLi区别与选择?

当用PHP访问数据库时,除了PHP自带的数据库驱动,我们一般还有两种比较好的选择:PDO和MySQLi。在实际开发过程中要决定选择哪一种首先要对二者有一个比较全面的了解。本文就针对他们的不同点进行分析,并对多数据库类型支持、稳定性、性能等等方面进行对比。     PDO ...

2018-07-31 23:54:44

阅读数:39

评论数:0

mysql 查询 in 导致数据出不来换成between and 就可以了

select count(1) as total from rights, lender where rights.loan_id in (25707,25708,25718)  and rightss.state IN (0,1,2,3,4,6) and lender.id= rights.le...

2018-06-06 11:21:53

阅读数:26

评论数:0

秒杀核心设计(减库存部分)-防超卖与高并发

方案二:start transaction;select id from buy_record where uid=$uid and goods_id=$goods_id for  update ;if(结果不为空)    抛异常,回滚。insert into buy_record。。。if(受影...

2018-06-04 14:14:24

阅读数:321

评论数:0

mysql binlog文件格式详解

binlog格式分为statement,row以及mixed三种,mysql5.5默认的还是statement模式,当然我们在主从同步中一般是不建议用statement模式的,因为会有些语句不支持,比如语句中包含UUID函数,以及LOAD DATA IN FILE语句等,一般推荐的是mixed格式...

2018-05-24 17:16:47

阅读数:63

评论数:0

MySQL中B+Tree索引原理

B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B-Tree),B+树...

2018-05-09 10:35:12

阅读数:35

评论数:0

mysql事务隔离级别

未提交读:一个事务可以读取另一个未提交的数据,容易出现脏读的情况。读提交:一个事务等另外一个事务提交之后才可以读取数据,但会出现不可重复读的情况(多次读取的数据不一致),读取过程中出现UPDATE操作,会多。(大多数数据库默认级别是RC,比如SQL Server,Oracle),读取的时候不可以修...

2018-05-07 16:21:15

阅读数:24

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭