1.什么是锁: 对共享资源进行并发访问控制,提供数据的完整性和一致性. 2.锁的区别: 类型 lock latch 对象 事务 线程 保护 数据库内容 内存数据结构 持续时间 整个事务过程 临界资源 模式 行锁.表锁.意向锁 读写锁.互斥量 死锁 通过waits-for graph.time out等机制进行死锁检测与处理 无死锁检测与处理机制.仅通过应用程序加锁的顺序(latch leveling)保证无死锁的情况发生. 存在于 Lock Manager的哈希表中 每个数据结构对象中 latc…
一 . 两次写提出的背景或要解决的问题 两次写(InnoDB Double Write)是Innodb中很独特的一个功能点.因为Innodb中的日志是逻辑的,所谓逻辑就是比如插入一条记录时,它可能会在某一个页面(这条记录最终被插入的位置)的多个偏移位置写入某个长度的值,例如页头的记录数.槽数.页尾槽数据.页中的记录值等.这些本是一些物理操作,而Innodb为了节省日志量及其它原因,设计为逻辑处理的方式,即在一个页面上插入一条记录时,对应的日志内容包括表空间号.页面号.将被记录的各个列的值等内容,…
1.InnoDB的特点 :(1)Fully ACID (InnoDB默认的Repeat Read隔离级别支持):(2)Row-level Locking(支持行锁):(3)Multi-version concurrency control (MVCC 支持多版本控制):(4)Foreign key support (支持外键):(5)Automatic deadlock detection(死锁自动检测):(6)High performance.High scalability.High ava…
一般在生产环境中,很少用MySQL单实例来支撑业务,大部分的MySQL应用都是采用搭建集群的方法.搭建MySQL集群,可以进行数据库层面的读写分离.负载均衡或数据备份.基于MySQL原生的Replication是最常见的保证数据库安全的机制,满足数据库的高可用,在数据库发生宕机的情况后,其他节点还能快速提供服务,并且数据库的数据不丢失. Binlog是用来保存数据库修改的日志信息.一般的主从复制都是基于Binlog的,Binlog的安全直接关系到主从复制的安全,而Binlog的写入方式主要由参数…
在日常运维中,GTID带来的最方便的作用就是搭建和维护主从复制.GTID的主从模式代替了MySQL早期版本中利用二进制日志文件的名称和日志位置的做法,使用GTID使操作和维护都变得更加简洁和可高. 1.GTID的优点 (1)基于GTID搭建主从复制根据简单. (2)可以确保每个事务只会被执行一次. (3)可以方便的实现Replication的Failover,不需要像传统模式复制那样去找master_log_file和master_log_pos. (4)GTID在MGR中也发挥了中要作用.MG…
information_schema 此数据库是MySQL数据库自带的,主要存储数据库的元数据,保存了关于MySQL服务器维护的所有其他数据库的信息,如数据库名.数据库表.表列的数据类型及访问权限等. 这个库在很多情况下,可以帮助我们做一些自动化处理的工作,比如巡检程序找到所有的MyISAM表,或者是找到所有的自增列快达到上限的表.很多工具的信息来源,比如Percona Toolkit,它在查一些信息的时候也是通过在这个库上执行SQL语句来做的. 这个库有其明显的缺点:它在每次查找的时候,都会现…
1.半同步复制的特征 (1)从库会在连接到主库时告诉主库,它是不是配置了半同步. (2)如果半同步复制在主库端是开启了的,并且至少有一个半同步复制的从节点,那么此时主库的事务线程在提交时会被阻塞并等待,结果有两种可能,要么至少一个从库节点通知它已经收到了所有这个事务的Binlog事件,要么一直等待直到超过配置的某一个时间点为止,而此时,半同步复制将自动关闭,转换为异步复制. (3)从库节点只有在接收到某一个事务的所有Binlog,将其写入并Flush到Relay Log文件之后,才会通知对应主库…
1.InnoDB的数据存储结构 InnoDB中数据是通过段.簇.页面构成的. (1)段是表空间文件中的主要组织结构,它是一个逻辑概念,用来管理物理文件,是构成索引.表.回滚段的基本元素.创建一个索引(B+树)时会同时创建两个段,分别是内节点段和叶子段,内节点段用来管理(存储)B+树中非叶子节点(页面)的数据,叶子节点用来管理(存储)B+树中叶子节点数据.一个索引包括2个段,那么一个表的段的数目,就是索引的个数乘以2了. (2)簇是构成段的基本元素,一个段有若干个簇构成.一个簇是物理上连续分配的一…
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装,以 CentOS6.9 操作系统为例. 一.rpm 安装 安装速度较快,通常适用于企业中大规模部署 mysql,安装步骤如下: (1)首先下载 MySQL 的 rpm 安装包, 如下: 客户端:http://dev.mysql.com/get/Down- 服务端:http://dev.mysql.c…
SQL 基础知识梳理(六)-  函数.谓词.CASE 表达式 目录 函数 谓词 CASE 表达式 一.函数 1.函数:输入某一值得到相应输出结果的功能,输入值称为“参数”,输出值称为“返回值”. 2.函数的种类: (1)算术函数 - 数值计算 (2)字符串函数 - 字符串操作 (3)日期函数 - 日期操作 (4)转换函数 - 转换数据类型 (5)聚合函数 - 数据聚合 3.算术函数(加.减.乘.除):+.-.*./ [备注]数据类型 NUMBERIC(全体位数,小数位数)可以指定数值的大小. C…
游标的概念 结果集,结果集就是select查询之后返回的所有行数据的集合. 游标(Cursor): 是处理数据的一种方法. 它可以定位到结果集中的某一行,对数据进行读写. 也可以移动游标定位到你需要的行中进行数据操作. 是面向集合的数据库管理系统和面向行的程序设计之间的桥梁 游标的分类 SQL Server支持的API服务器游标分为4种:静态游标( STATIC )意味着,当游标被建立时,将会创建FOR后面的SELECT语句所包含数据集的副本存入tempdb数据库中,任何对于底层表内数据的更改不…
SQL 基础知识梳理(五) - 复杂查询 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5939796.html 序 这是<SQL 基础知识梳理(四) - 数据更新>的下篇. 目录 一.视图 1.视图和表 (1)视图:从 SQL 的角度来看视图就是一张表. (2)视图和表的区别:是否保存了实际的数据.数据库中的数据实际上保存到计算机的存储设备(如硬盘):视图实际上保存的是 SELECT 语句,从视图中读取数据时,视图会在内部执行该 SELETC…
SQL 基础知识梳理(七)- 集合运算 目录 表的加减法 联结(以列为单位) 一.表的加减法 1.集合:记录的集合(表.视图和查询的执行结果). 2.UNION(并集):表的加法 -- DDL:创建表 CREATE TABLE Shohin2 (shohin_id ) NOT NULL, shohin_mei ) NOT NULL, shohin_bunrui ) NOT NULL, hanbai_tanka INTEGER , shiire_tanka INTEGER , torokubi D…
引言: 前面专题主要介绍了C#1中的2个核心特性——委托和事件,然而在C# 2.0中又引入一个很重要的特性,它就是泛型,大家在平常的操作中肯定会经常碰到并使用它,如果你对于它的一些相关特性还不是很了解,那就让我们一起进入本专题的学习的.   一.泛型的是什么 泛型的英文解释为generic,当然我们查询这个单词时,更多的解释是通用的意思,然而有些人会认为明明是通用类型,怎么成泛型了的,其实这 两者并不冲突的,泛型本来代表的就是通用类型,只是微软可能有一个比较官方的此来形容自己引入的特性而已,既然…
SQL 基础知识梳理(一)- 数据库与 SQL [博主]反骨仔 [原文地址]http://www.cnblogs.com/liqingwen/p/5902856.html 目录 What's 数据库 数据库结构 SQL 概要 创建数据库与表 删除和更新表 一.What's 数据库 1.数据库(Database,DB):将大量数据保存起来,通过计算机加工而成的可以进行高效访问的数据集合.如:大型-银行存储的信息,小型-电话簿. 2.数据库管理系统(Batabase Management Syste…
C#基础知识梳理索引 一 引子 之前曾写了一篇随笔<.NET平台技术体系梳理+初学者学习路径推荐+我们的愿景与目标> 三个月过去了,目标使更多的编程初学者,轻松高效地掌握C#开发的基础,重点知识,快速进阶,本博循序渐进的写了一系列C#基础知识的系列随笔(未来会继续不断补充),现索引如下: 二 C#基础知识梳理索引 高效掌握C#第一回---C#中的基本数据类型及其相互转换 高效掌握C#第二回---C#数组 高效掌握C#第三回---字符串常用操作 高效掌握C#第四回---字符串补充知识之@的妙用…
mysql基础知识语法汇总整理(二)   连接数据库操作 /*连接mysql*/ mysql -h 地址 -P 端口 -u 用户名 -p 密码 例如: mysql -u root -p **** /*退出mysql*/ exit;   数据库操作 #数据库操作 /*关键字:create 创建数据库(增)*/ create database 数据库名 [数据库选项]; 例如: create database test default charset utf8 collate utf8_bin; /…
SQL 基础知识梳理(二) - 查询基础 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5904824.html 序 这是<SQL 基础知识梳理(一)- 数据库与 SQL>的下篇. 目录 SELECT 语句基础 算术运算符和比较运算符 逻辑运算符 一.SELECT 语句基础 1.查询指定列:SELECT 关键字 --语法: --SELECT <列名>, ... -- 希望查询列的名称 --FROM <表名> -- 指定选取…
SQL 基础知识梳理(三) - 聚合和排序 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5926689.html 序 这是<SQL 基础知识梳理(二) - 查询基础>的下篇. 目录 对表进行聚合查询 对表进行分组 为聚合结果指定条件 对查询结果进行排序 一.对表进行聚合查询 1.聚合函数 (1)5 个常用函数: ①COUNT:计算表中的记录(行)数. ②SUM:计算表中数值列的数据合计值. ③AVG:计算表中数值列的数据平均值. ④MAX:求出…
SQL 基础知识梳理(四) - 数据更新 [博主]反骨仔 [原文]http://www.cnblogs.com/liqingwen/p/5929786.html 序 这是<SQL 基础知识梳理(三) - 聚合和排序>的下篇. 目录 插入数据 删除数据 更新数据 事务 一.插入数据 1.INSERT 语句的基本语法 --语法: --INSERT INTO <表名>(列1, 列2, ...) VALUES (值1, 值2, ...) --示例INSERT INTO dbo.Shohin…
基础知识梳理 - 软件测试 - 概念 基础知识梳理 - 软件测试 - 分类 基础知识梳理 - 软件测试 - 流程 基础知识梳理 - 软件测试 - 用例 基础知识梳理 - 软件测试 - 方法 基础知识梳理 - 软件测试 - 阶段 基础知识梳理 - 软件测试 - 自动 基础知识梳理 - 软件测试 - 探索 基础知识梳理 - 软件测试 - 理解 基础知识梳理 - 软件测试 - 模型…
java基础知识梳理 1 基本数据类型…
Linux基础知识梳理 Linux内核最初只是由芬兰人林纳斯?托瓦兹(Linus Torvalds)在赫尔辛基大学上学时出于个人爱好而编写的.Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户.多任务.支持多线程和多CPU的操作系统. 它支持32位和64位硬件.Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统.目前市面上较知名的发行版有:Ubuntu.RedHat.CentOS.Debain.Fedora.SuSE.O…
前言:本文主要为mysql基础知识的大总结,mysql的基础知识很多,这里作简单概括性的介绍,具体的细节还是需要自行搜索.当然本文还有很多遗漏的地方,后续会慢慢补充完善. 数据库和数据库软件 数据库是保存有组织数据的容器 DBMS是为管理数据库而设计的软件管理系统,MYSQL.ORACLE 等是数据库管理系统 MYSQL MYSQL是一种数据库管理软件 开放源码,免费使用 MYSQL命令 CREATE DATABASE NAME 创建数据库 USE DATABASE 选择数据库 DROP DAT…
mysql基础知识语法汇总整理(一) insert /*insert*/ insert into 表名(字段列表) values(值列表); --蠕虫复制 (优点:快速复制数据,测试服务器压力) insert into 表名1_插入 select (字段列表) from 表名2_复制; 例如:create table copy( id ) unsigned not null comment 'id', name ) not null default '' comment '名字' )engine…
整理.记录常用的MySQL基础知识:时间久了,很多就忘记了. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0.13 MySQL Community Server - GPL. 安装.启动和连接 安装 安装完MySQL Server后,需要运行mysql_secure_installation确保安全, 运行mysql_secure_installation会执行几个设置: 为root用户设置密码 是否删除匿名账号 是否取消root用户远程登录 是否删除test库和对te…
虚构一个微型在线书店的数据库和数据,作为后续MySQL脚本的执行源,方便后续MySQL和SQL的练习. 在虚构这个库的过程中,主要涉及的是如何使用命令行管理 MySQL数据库对象:数据库.表.索引.外键等:另一个更为重要的是如何Mock对应表的数据. 虚构书店数据库的dump脚本:Github 数据库(Database) 将要创建的虚拟书店的数据库名为: mysql_practice; 创建数据库的语法: CREATE DATABASE [IF NOT EXISTS] database_name…
A character set is a set of symbols and encodings. A collation is a set of rules for comparing characters in a character set. Character Set: 一套字符及其编码,即字符集:(文中很多地方也用 charset 一词) Collation:在字符集内用于比较或排序字符的一套规则,即校验规则. 操作系统环境为MacOS Catalina, MySQL版本为: 8.0…
Go基础知识梳理(四) GO的哲学是"不要通过共享内存来通信,而是通过通信来共享内存",通道是GO通过通信来共享内存的载体. rumtime包常用方法 runtime.NumGoroutine() //返回当前程序的协程数量 runtime.GOMAXPROCS(0) //获取当前的GOMAXPROCS数量 runtime.GOMAXPROCS(2) //设置程序的GOMAXPROCS数量为2 goroutine 特性 执行是非阻塞的,不会等待 go 后面的返回值会被忽略 调度器不能保…
Go基础知识梳理(三) 结构 type Person struct { name string sex int } func main() { //推荐写法 person := Person{ name: "张三", sex: 1, } //不推荐写法 person = Person{"李四", 1} p := New(Person) //会初始化name="", sex = 0 } 接口 //接口的一些特点: //接口的命名一般以er结尾,具体…