数据结构与算法

mysql的MVCC机制

面试问题:如果两个客户端同时执行一个查询sql,为什么查出的数据可能不一样? 解答:是因为mysql底层维护了一个undo日志版本链和read-view一致性试图机制,在repeatable-read隔离级别下,一个事务开启之后,当执行查询语句的时候,就生成了一个read-view,之后查询就会根据一定的规则去undo日志版本链中比对数据;在read-commited隔离级别下,一个事务开启之后,

数据库多表查询 联合查询 增删改查

1|*1*****方式一 语法: insert into 表名 (字段名,...) values (值,...); 特点: 1、要求值的类型和字段的类型要一致或兼容 2、字段的个数和顺序不一定与原始表中的字段个数和顺序一致 但必须保证值和字段一一对应 3、假如表中有可以为null的字段,注意可以通过以下两种方式插入null值 ①字段和值都省略 ②字段写上,值使用null 4、字段和

MySQL笔记

MySQL 基础篇 一、SQL 1、SQL 通用语法 (1)SQL语句可以单行或多行书写,以分号结尾。 (2)SQL语句可以使用空格/缩进来增强语句的可读性。 (3)MySQL数据库的SQL语句不区分大小写,关键字建议使用大写。 (4)注释: 单行注释 : -- 注释内容  或  # 注释内容 (MySQL 特有) 多行注释 : / * 注释内容 */ 2、SQL分类 分类说明 DDL数据定义

MySQL查询优化(七):MySQL 的 count (*)真的很低效?

优化COUNT函数的查询在 MySQL 中最容易被误解的话题中能够排进前10名,我们可以在网上搜索了解更多关于 COUNT 优化的误解信息。在进行优化前,理解 COUNT 到底做了什么很重要。 COUNT 函数做什么用? COUNT 是一个专用的函数,通常有两种不同的方式:计算值和数据行。值指的是非空(Non-NULL)表达式(NULL表示值缺失)。如果我们在 COUNT的参数中指定了列名或其

存储引擎 - InnoDB

存储结构 5.7-引擎架构图 内存结构 内存结构主要包括 Buffer Pool、Change Buffer、Adaptive Hash Index和 Log Buffer 四大组件 Buffer Pool 缓冲池,简称BP。BP以 Page 页为单位,默认大小 16 K。BP的底层采用链表数据结构管理 Page。 在 InnnoDB 访问表记录和索引是会在 Page 页中缓存,以后使

Django 数据库连接丢失

在 Django 工程中,有时候我们需要在服务器上执行一些脚本。这些脚本需要 Django 的运行环境,还需要做一些 ORM 操作。一般大概流程如下: import os os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'project.settings') import django django.setup() from app.t

Linux 操作的良好习惯总结

从事运维,遇到过各式各样的问题,数据丢失,网站挂马,误删数据库文件,黑客攻击等各类问题。 一、线上操作规范 1. 测试使用 当初学习Linux的使用,从基础到服务到集群,都是在虚拟机做的,虽然老师告诉我们跟真机没有什么差别,可是对真实环境的渴望日渐上升,不过虚拟机的各种快照却让我们养成了各种手贱的习惯,以致于拿到服务器操作权限时候,就迫不及待的想去试试,记得上班第一天,老大把root密码交给我,由

事务版本控制

问题由来 近段时间我们项目需要实现一个事务版本控制的列式数据库,下面来讲一讲我们的设计: 开启事务时候进行一个事务说明 例如 1.开启事务 POST { "explainValue(操作解释)": "I want update some Info")(必要) } 2.关闭事务 POST 记录

mysql查询成本比较

1.工具 1.mysql:8.0.25 2.msyqlworkbench 2.成本定义 执行sql查询所需要花费的代价 3.查看成本的方式 执行一条示例语句,如下: select sql_no_cache suser.id,suser.name ,srole.name from sys_user suser inner join sys_user_role surole on suser.i