面试-MySQL计算

发布时间:2019-09-26  栏目:MySQL  评论:0 Comments

Mysql死锁难题

Mysql悲观锁总计和施行

Mysql乐观锁计算和进行

SELECT … LOCK IN SHARE MODE SELECT … FO本田CR-V UPDATE:(LOCK IN SHARE
MODE 在有一方职业要Update 同三个表单时很轻便导致死锁)

开朗锁:取锁战败,产生回溯时影响功用。

 取数据时以为其余线程不会对数据开展更改。

 更新时判定是不是对数码实行改换,版本号机制或CAS操作。

自找麻烦锁:每一次取多少都会加锁。

innodb_lock_wait_timeout 等待锁超时回滚事务:  【超时法】

直观方法是在七个事情相互等待时,当贰个等候时间超越设置的某一阀值时,对中间三个事情进行回滚,另贰个事情就能继续试行。在innodb中,参数innodb_lock_wait_timeout用来安装超时时间。

wait-for graph算法来大力开展死锁检查实验:  【等待图法】

innodb还提供了wait-for
graph算法来主动进行死锁检查实验,每当加锁需要不能够即刻满意急需并步向等待时,wait-for
graph算法都会被触发。

2 MySQL存款和储蓄引擎

 

特点

Myisam

BDB

Memory

InnoDB

Archive

存储限制

没有

没有

64TB

没有

事务安全

 

支持

 

支持

 

锁机制

表锁

页锁

表锁

行锁

行锁

B树索引

支持

支持

支持

支持

 

哈希索引

   

支持

支持

 

全文索引

支持

       

集群索引

     

支持

 

数据缓存

   

支持

支持

 

索引缓存

支持

 

支持

支持

 

数据可压缩

支持

     

支持

空间使用

N/A

非常低

内存使用

中等

批量插入的速度

非常高

支持外键

     

支持

 

Myisam:各样MyISAM在磁盘上囤积成四个文件。文件名都和表名同样,扩张名分别是.frm(存款和储蓄表定义)、.MYD(MYData,存款和储蓄数据)、.MYI(MYIndex,存款和储蓄索引)。数据文件和目录文件能够停放在分歧的目录,平均遍及io,得到越来越快的进程。最常使用的2种存款和储蓄引擎:

 

InnoDB:是Mysql的暗中认可存款和储蓄引擎。当create创建新表时,未钦点新表的积存引擎时,暗中同意使用InnoDB。存款和储蓄引擎提供了装有提交、回滚和崩溃苏醒工夫的事情安全。然则相比较Myisam的存款和储蓄引擎,InnoDB写的管理效能差那么一点并且会占据越来越多的磁盘空间以保留数据和目录。

备份

数据备份(深入显出Mysql 27章 备份与回复)

 全备份与增量备份的可比。

 保障 MySQL 张开 log-bin 选项,有了 BINLOG,MySQL
才得以在必要的时候做完 整形复原苏,或依据时间点的复原,或遵照地方的回复。

逻辑备份(将数据库中的数据备份为三个文本文件,备份的公文能够被查 看和编排。)

物理备份

 冷备份:cp移动数据文件的方法。

 重作冯妇:移动数据文件,使用 mysqlbinlog 工具复苏自备份以来的具有BINLOG。

 热备份:(将要备份的表加读锁,然后再 cp 数据文件到备份目录。)

 MyISAM:mysqlhotcopy工具。

 ibbackup 是 Innobase 集团(www.innodb.com)的三个热备份工具。

1 事务的表征

 

政工有着八个特色:原子性(Atomicity)、一致性(Consistency)、隔开性(Isolation)和连绵(Durability)。那八个特征也简称ACID性。

(1)原子性:事务是使用中型小型小的的实行单位,如同原子是宇宙最小颗粒,具有不可再分的性格一样。事务是利用中不得再分的细微逻辑执行体。

(2)一致性:事务施行的结果,必需使数据库从叁个一致性状态,变到另贰个一致性状态。当数据库中只包罗事务成功交付的结果时,数据库处于一致性状态。一致性是因此原子性来保管的。

(3)隔离性:种种业务的施行互不烦扰,任性叁个事务的中间操作对另外并发的事务,都是隔绝的。也正是说:并发推行的事情之间不可能看到对方的中间状态,并发推行的事体之间不能互相影响。

(4)持久性:指事务一旦付出,对数码所做的任何更改,都要记录到永世存款和储蓄器中,日常是保存进物理数据库。

触发器

 触发器的接触事件 , 能够是 INSERT 、UPDATE 只怕 DELETE 。

 触发时间 , 能够是 BEFORE 或然 AFTE大切诺基。

 同二个表一样触发时间的一律触发事件 , 只可以定义贰个触发器,只协助基于行触发。

 触发器的原子性,InnoDB辅助专门的学问,MyISAM不辅助。

3 采取伏贴的MySQL存储引擎

选取典型:依照使用特点采纳合适的存储引擎,对于复杂的应用连串能够遵照真实境况选用多样仓库储存引擎实行重组。下边是常用存款和储蓄引擎的适用条件:

MyISAM:在Web、数据存款和储蓄和别的应用情形下最常使用的存款和储蓄引擎之一。

InnoDB:暗中认可的MySQL插件式存款和储蓄引擎,用于事务处理应用程序,具有众多特色,富含ACID事务扶助。

Memory:将具备数据保存在RAM中,在需求飞速寻找引用和其他类似数据的条件下,可提供一点也不慢的走访。

Merge:允许MySQLDBA或开垦职员将一层层同样的MyISAM表以逻辑格局结合在一块,并视作1个指标引用它们。对于诸如数码存款和储蓄等VLDB遭遇特别相符。

三范式

三范式定义(范式和反范式)

1NF:每一个数据项都以微小单元,不可分割,明确行列之后只好对应一个数据。

2NF:每三个非主属性完全依赖于候选码(属性组的值能独一的标志三个元组,不过其子集不得以)。

3NF:每二个非主属性既不传递依赖于,也不有的借助于(主码=候选码为多个市,从中选出三个当作主码)。

BCNF主属性(候选码中的某叁性格质)内部也无法有个别或传递信赖于码。

4NF :未有多值正视。

5 MySQL帮助的数据类型

数值型:

图片 1

 

日期时间项目:

图片 2

 

字符串类型:

图片 3

 

空间数据类型:

图片 4

 

 具体品种介绍:

单列索引:差别意为空

 普通索引 不容许有空值

 独一索引

 主键索引 在 InnoDB 引擎中很入眼

组成斯特林发动机:八个字段上创制的目录,复合索引时服从最左前缀原则。

 查询中有些列有范围查询,则其左侧的持有列都不恐怕接纳查询

全文索引:

空间索引:

参考:细说mysql索引自家的MYSQL学习心得(九)
索引

7 MySQL搞定乱码难题

在数码库安的时候钦命字符集,假使在安完了以往可以转移以下文件:C:\ProgramFiles\MySQL\MySQL
Server 5.0\my.ini 里的有着的 default-character-set=gbk C:\Program
Files\MySQL\MySQL Server
5.0\data\depot_development\db.optdefault-character-set=gbk
default-collation=gbk_chinese_ci 创建数据库时候:钦赐字符集类型

http://www.bkjia.com/Mysql/1036944.htmlwww.bkjia.comtruehttp://www.bkjia.com/Mysql/1036944.htmlTechArticle面试-MySQL 1 事务的特性事务具有多个特点:原子性(Atomicity)、一致性(Consistency)、隔开分离性(Isolation)和持续性(Durability)。那多少个特色…

EXPLAIN 字段介绍

 possible_keys:显示恐怕行使在那张表中的目录。

 key:实际使用的目录。

 key_len:使用的目录的长度,越短越好。

 ref:展现索引的哪一列被使用了。

 rows:MySQL认为必需寻觅的用来回到诉求数据的行数。

 type:使用了何类别型。从最棒到最差的连天类型为system、const(常量)、eq_ref、ref、range、index(索引全表扫描)和ALL(全表扫描)。

6 MySQL置于函数

数学函数

BIN(x):再次回到x的二进制(OCT再次来到八进制,HEX重返十六进制)

FLOO瑞虎(x):重返小于x的最大整数值

ROUND(x,y):重回参数x的四舍五入的有y位小数的值

LOG(x,y):再次回到x的以y为底的对数

MOD(x,y):返回x/y的模(余数)

聚合函数:

COUNT(col):重回钦命列中国和北美洲NULL值的个数

MIN(col):重临钦定列的最小值

MAX(col):再次回到钦命列的最大值

SUM(col):重临钦点列的全部值之和

字符串函数:

LENGTH(s):再次回到字符串str中的字符数

CONCAT(s1,s2…,sn):将s1,s2…,sn连接成字符串

T昂CoraIM(str):去除字符串首部和后面部分的具备空格

LEFT(str,x):再次回到字符串str中最侧面的x个字符

智跑IGHT(str,x):再次回到字符串str中最侧面的x个字符

日期时间函数:

NOW():再次来到当前的日子和岁月

WEEK(date):再次回到日期date为一年中第几周(0~53)

YEA汉兰达(date):重回日期date的年度(一千~9999)

DAYOFWEEK(date):再次来到date所表示的一星期中的第几天(1~7)

DAYOFMONTH(date):重返date是五个月的第几天(1~31)

DAYOFYEARubicon(date):再次来到date是一年的第几天(1~366)

加密函数:

MD5():总计字符串str的MD5校验和

ENCENVISIONYPT(str,salt):使用UNIXcrypt()函数,用关键词salt(叁个得以惟一鲜明口令的字符串,就疑似钥匙同样)加密字符串str

支配流函数:MySQL有4个函数是用来进展规范操作的,那些函数能够兑现SQL的条件逻辑,允许开荒者将某些应用程序业务逻辑转形成数据库后台。

SELECT CASE ‘green’

WHEN ‘red’ THEN ‘stop’

WHEN ‘green’ THEN ‘go’ END;

格式化函数:

DATE_FORMAT(date,fmt):依照字符串fmt格式化日期date值

TIME_FORMAT(time,fmt):依据字符串fmt格式化时间time值

花色转化函数:

为了举办数据类型转化,MySQL提供了CAST()函数,它能够把四个值转化为钦点的数据类型。类型有:BINA本田CR-VY,CHAR,DATE,TIME,DATETIME,SIGNED,UNSIGNED

示例:

SELECT CAST(NOW() AS SIGNED INTEGER), CURDATE()+0;

SELECT ‘f’=BINARY ‘F’, ‘f’=CAST(‘F’ AS BINARY);

系统音讯函数:

CONNECTION_ID():重返当前客商的连天ID

VE大切诺基SION():再次回到MySQL服务器的本子

USER()或SYSTEM_USEQX56():再次回到当前登录客商名

FOUND_ROWS():重返最终三个SELECT查询举办查找的分公司数

http://bxbx258.blog.51cto.com/339450/106008

视图 

MySQL数据库视图

MySQL –
视图算法

视图最简便的兑现格局是把select语句的结果存放到一时表中。具有品质难点,优化器很难优化一时表上的询问。

 合併算法 :select语句与外表查询视图的select语句举行联合,然后实践。

 一时表算法 :先实践视图的select语句,后施行外部查询的言辞。

视图在某个景况下得以荣升品质,并和别的进级品质的方法叠合使用。

 视图不得以跨表实行改换数据,

 创设有标准化限制的视图时,加上“WITH CHECK OPTION”命令。

面试-MySQL

 

数据库ACID

数据库的ACID

数据库事务介绍

原子性(Atomicity)一个政工必得被视为四个不可分割的细微工作单元,整个业务中的全体操作照旧全体付给成功,要么全体功败垂成回滚,对于贰个业务来讲,不也许只举办其中的一某些操作。

一致性(Consistency)数据库总是从四个一致性的状态转变来另二个一致性的状态。

隔离性(Isolation)多少个事务所做的改造在最后提交此前,对任何业务是不可见的。

持久性(Durability)比如事情提交,则其所做的修改不会永世保存到数据库。

4 种隔离等级

MVVC的简短介绍

READ
UNCOMMITTED(未提交读)脏读
:事务中的修改,纵然未有交到,对别的工作也都以可知的。

READ
COMMITTED(提交读)不可重复读
:事务从开端直到提交从前,所做的别样改变对其余事情都是不可见的。

REPEATABLE
READ(可重复读):幻读:
一个事务按一样的查询条件读取从前检索过的多少,其余事情插入了满足其询问条件的新数据。发生幻行。

SE奇骏IALIZABLE(可串行化) 强制事务串行奉行

MVVC是个行级锁的变种,它在普通读境况下幸免了加锁操作,自特定情景下加锁

4 MySQL特点

与别的数据库Oracle、DB2、SQL Server等相比成效稍弱一些

1、能够管理具备上千万条记下的重型数据;

2、帮助广大的SQL语句标准 ;

3、可移植行高,安装简便小巧 ;

4、突出的运作作用,有丰富新闻的互联网协理;

5、调节和测验、管理,优化轻松(相对别的大型数据库)。

数据类型

MySQL数据类型-新手教程 

MYSQL中数据类型介绍

大背头: int(m)里的m是表示数据突显上升的幅度,浮点数,定点数。

字符串:char(n)4.0 n 代表字节,5.0 n 代表字符 (UTF-8=3zj,GBK=2zj)

 char 固定的字符数,空格补上;检索速度快。

 varchar 字符数+1个字节(n<=255)或2个字节(n>255)

 text 字符数+2个字节;无法有默许值;索引要钦赐前有个别个字符;文本方式存款和储蓄

 blob 二进制格局存储

索引

目录(存储引擎 快速找到记录的一种数据结构,索引的基本功用)

什么是B-Tree

MySQL索引背后的数据结构及算法原理

MySQL品质优化-慢查询分析、优化索引和配置

事件

   
 
看似于Linux的定时义务,有些时间可能每隔一段时间施行一段SQL代码。

MySQL索引详解 (一般选用磁盘I/O次数评价索引结构的好坏。)

 磁盘存取原理

 局地性原理与磁盘预读

M 阶 B-Tree

 图片 5

 根节点至少有2个子树。

 每一个非叶子节点由n-1个key和n个指针组成。

 分支节点至少存有m/2颗子树,最多有着m个子树。(除根节点和叶子结点外)

 全部叶节点具备同等的深度,等于树高 h。

 各样叶子节点最少包涵一个key和八个指针,最多包涵2d-1个key和2d个指针。

B+ Tree

 内节点不存款和储蓄data,只存款和储蓄key。

 叶子节点不存款和储蓄指针。

MySQL 索引达成

 MyISAM 索引文件和数据文件是分开,非聚集索引。

 InnoDB 叶节点满含了完全的多少记录,聚集索引。依据主键聚焦。

索引类型:

 B-Tree索引 索引列的次第影响者是还是不是利用索引。

 哈希索引

 无计可施用于排序。

 只帮衬任何郎才女貌。

 只协理等值相比较。

 有无数哈希冲突时,功效不太高。

 空间数据索引(Haval-Tree)没有供给前缀查询,从有着维度查询数据。

 全文字笔迹核算索 查找文本中的关键词,类似于寻找引擎做的事体。

积存引擎

各类存款和储蓄引擎的界别与联络   
 
(存款和储蓄数据手艺和政策,存款和储蓄机制、索引技艺、锁定水平等)

数据仓库储存款和储蓄引擎 
   show table status 突显表的连锁新闻

InnoDB与MyISAM的可比(从5.7发端innodb存款和储蓄引擎成为暗中同意的蕴藏引擎。)

 锁机制:行级锁,表级锁

 事务操作:事务安全,不援助

InnoDB
(1)可相信性供给相比较高,供给作业;(2)表更新和询问都特别的反复,何况行锁定的机会非常的大的景况。

 MySQL4.1从此每一个表的多寡和目录存款和储蓄在二个文件里。

 InnoDB
采取了MVCC来支撑高产出,况兼完成了七个正经的隔开等第。其暗中认可品级是REPEATABLE
READ(可重新读) ,行级锁。

 自动祸殃复苏。与其余存款和储蓄引擎差别,InnoDB表能够活动从横祸中还原。

 外键约束。MySQL援助外键的仓库储存引擎只有InnoDB。

 帮忙电动扩大列AUTO_INCREMENT属性。

My伊萨m  (1)做过多count
的计量;(2)插入不频仍,查询非常频仍;(3)没有专门的工作。

 表存款和储蓄在八个文件中,数据文件(MYD)和目录文件(MYI)

 表级锁,读=共享锁,写=排它锁。

 适合选取密集型的表,插入密集型的表。

日志

荒唐日志:笔录了当 mysqld 运转和停息时,以及服务器在
运转进度中发生别的严重错误时的相关消息。

二进制文件:记录了全数的 DDL(数据定义语言)语句和
DML(数据垄断语言)
语句,不饱含数据查询语句。语句以“事件”的款式保留,它描述了数据的改造进程。(按时删除日志,暗许关闭)。

询问日志:笔录了客商端的富有语句,格式为纯文本格式,能够间接进行读取。(log
日志中著录了具有数据库的操作,对于访谈频仍的体系,此日志对系统品质的震慑相当大,提议关闭,私下认可关闭)。

慢查询日志:慢查询日志记录了带有全体推行时间超越参数long_query_time(单位:秒)所设置值的
SQL
语句的日志。(纯文本格式)MySQL日志文件之不当日志和慢查询日志详解

日记文件小结:

 系统故障时,建议首先查看错误日志,以帮扶客商急迅定位故障原因。

 记录数据的变动、数据的备份、数据的复制等操作时,张开二进制日志。默许不记录此日志,建议通过–log-bin
选项将此日志展开。

 假若愿意记录数据库发生的其他操作,蕴含 SELECT,则供给用–log
将查询日志展开,
此日志暗中认可关闭,一般情状下提出并不是展开此日志,防止影响系统一整合体质量。

 查看系统的性情难题, 希望找到有总体性难点的SQL语 句,须求 用
–log-slow-queries 展开慢查询日志。对于大气的慢查询日志,提议利用
mysqldumpslow 工具 来进行汇总查看。

恢复

     完全复苏

 将备份作为输入试行。

 将备份后施行的日志实行重做。

    
不完全复苏(跳过误操作语句,再过来后
 面试行的言语,完毕我们的复原。)

 基于时间点的操作。跳过故障爆发时间。

 基于地点的恢复生机。找到出错语句的职位号,并跳过岗位间距。

 

留下评论

网站地图xml地图