这期的文章主要是讲述写操作过程中涉及到的三个日志文件,看过前几期的话可能你或多或少已经有些了解了(或者从别的地方也了解过).比如整个写操作过程中用到的两阶段提交,又或者是操作过程中涉及到的日志文件,但是总体来说不是很系统更谈不上全面. 今天我们就来会会这三兄弟. 图注:思维导图 两阶段提交 这个名词你应该听到过很多次了,在这里再介绍下这位老朋友. 所谓的两阶段提交,从字面意思来看应该是有两个步骤来进行约束的.事实上也是如此.这两个步骤中的主角就是我们今天要讲的重要角色中的两位:binlog 和…
具体到操作流程: 当执行某个写操作的 SQL 时,引擎将这行数据更新到内存的同时把对应的操作记录到 redo log 里面,然后处于 prepare 状态.并把完成信息告知给执行器. 执行器生成对应操作的 binlog,并把 binlog 写入磁盘里.然后调用引擎的提交事务接口,变更 redo log 状态为 commit. ===>>><<<<==== 重做日志(redo log 位于存储引擎层的 redo log,它是用来记录在"数据页做了什么修改&…
一. 简介 DQL:指数据库中的查询(select)操作. DML:指数据库中的插入(insert).更新(update).删除(delete)等行数据变更操作. DDL:指数据库中加列(add column).修改列(change column).创建索引(create index).删除索引(drop index).删除表(drop table).清理表(truncate table)等表结构定义操作. 经常有同学会碰到索引加不上,或者drop table卡住等DDL执行问题,很想和他们解释…
问题:如果在Access 中数据库操作时提示from子句语法错误原因:语句中某一单词为Access中的关键字.如:select * from user.其中user就是一关键字.解决:用中括号[]将其括起来.如:[user]即可.…
单精度浮点数用4字节(32bit)表示浮点数,采用IEEE754标准的计算机浮点数,在内部是用二进制表示的,如:7.22用32位二进制是表示不下的,所以就导致不精确了,存取会出现误差. mysql中float数据类型的问题总结: 对于单精度浮点数float:当数据范围在±131072(65536×2)以内的时候,float数据精度是正确的,但是超出这个范围的数据就不稳定. 建议:将float改成double或者decimal,两者的差别是double是双精度浮点计算,decimal是定点计算,会…
MySQL数据库是一个基于结构化数据的开源数据库.SQL语句是MySQL数据库中核心语言.不过在MySQL数据库中执行SQL语句,需要小心两个陷阱. 陷阱一:空值不一定为空 空值是一个比较特殊的字段.在MySQL数据库中,在不同的情形下,空值往往代表不同的含义.这是MySQL数据库的一种特性.如在普通的字段中(字符型的数据),空值就是表示空值.但是如果将一个空值的数据插入到TimesTamp类型的字段中,空值就不一定为空.此时为出现什么情况呢(如下图)? 我先创建了一个表.在这个表中有两个字段:…
首先声明一下,我用的是Windows系统! 1.在Python中对mysql数据库进行操作首先要导入pymysql模块,默认情况下,Python中是没有安装这个模块的, 可以在Windows的命令行中用pip install pymysql来安装(注意要连网).除了pymysql模块外,还可以用其他模块. 2.在Python中数据库表的创建就不细说了,我习惯是在navicat中创建. 3.查找数据 (1)不带条件的查找 import pymysql conn = pymysql.connect(…
一直把视图理解为一个select语句而已,视图一般就是用于查询,不会通过视图来更新表或视图本身的数据,所以视图根本不需要什么主键.今天自己建了一个视图view_test: drop view if exists view_test create view view_test as select a.c1,a.c2, b.c1,b.c2, c.c1,c.c2, d.c1,d.c2 from table_A a join teble_B b on a.c3=b.c3 join table_C c o…
今天看<python编程从入门到实践>的第10章文件.异常,在做练习的时候,向文件中写内容,但是写中文就不行,后来在百度上查了众多资料,解决方法如下: 解决:在open()函数中添加一个encoding=“utf-8”即可…
https://www.cnblogs.com/wodebudong/articles/7976474.html 最近遇到一件锁表的情况,发现更新的语句where检索的字段,没有建索引,且是批量操作的,就出现了锁表的情况了. 所以有两个问题: 1.建索引和不建索引,对锁表的影响 2.为什么批量更新时会锁表 1. 建索引和不建索引,对锁表的影响 1.带索引  2.不带索引 前提介绍: 方式:采用命令行的方式来模拟 1.mysq由于默认是开启自动提交事务,所以首先得查看自己当前的数据库是否开启了自动…