三范式

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

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

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

3NF:每三个非主属性既不传递正视于,也不有的依附于(主码=候选码为七个市,从中选出四个看作主码)。

BCNF主属性(候选码中的某八个个性)内部也不能够有的或传递正视于码。

4NF :没有多值重视。

转自:http://www.maomao365.com/?p=6410

select
request_session_id spid,
OBJECT_NAME(resource_associated_entity_id) tableName
from
sys.dm_tran_locks
where
resource_type=’OBJECT’

数据类型

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 二进制格局存款和储蓄

摘要:

 

积攒引擎

各类存款和储蓄引擎的分别与交换   
 
(存款和储蓄数据技术和政策,存储机制、索引工夫、锁定水平等)

数据库存款和储蓄引擎 
   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)

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

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

下文首要分享从钦定字符串或列中获取数字音讯,如下所示:
实施情状:sql server 2000

然后kill 里面包车型地铁进度

数据库ACID

数据库的ACID

数据库事务介绍

原子性(Atomicity)二个专业必得被视为三个不可分割的一丝一毫专门的学问单元,整个事情中的全部操作照旧全体付出成功,要么全体未果回滚,对于贰个事务来讲,不容许只进行个中的一部分操作。

一致性(Consistency)数据库总是从三个一致性的情形转变来另二个一致性的情事。

隔离性(Isolation)贰个事务所做的修改在结尾提交从前,对任何作业是不可知的。

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

4 种隔断等级

MVVC的回顾介绍

READ
UNCOMMITTED(未提交读)脏读
:事务中的修改,纵然未有付诸,对其他业务也都以可知的。

READ
COMMITTED(提交读)不可重复读
:事务从上马直到提交此前,所做的别样改造对任何作业都以不可知的。

REPEATABLE
READ(可再次读):幻读:
二个事务按一样的查询条件读取此前检索过的数量,别的作业插入了满意其询问条件的新数据。发生幻行。

SELX570IALIZABLE(可串行化) 强制事务串行实施

MVVC是个行级锁的变种,它在习认为常读情形下防止了加锁操作,自特定情景下加锁

----编写sql函数
    create function getShuZi(@tmp nvarchar(800))
    returns nvarchar(800)
    as 
    begin
          while PATINDEX('%[^0-9]%', @tmp) > 0  
           begin  
             set @tmp = STUFF(@tmp, PATINDEX('%[^0-9]%', @tmp), 1, '');  
           end;  
           return @tmp;   
    end
    go
   ----测试sql函数
   SELECT dbo.getShuZi('猫猫小屋maomao365.com-sql教程专用网站')   
   go
   drop function dbo.getShuZi
   go

Mysql死锁难题

Mysql悲观锁总计和执行

Mysql乐观锁总括和实行

SELECT … LOCK IN SHARE MODE SELECT … FOEnclave 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算法都会被触发。

 

索引

目录(存款和储蓄引擎 神速找到记录的一种数据结构,索引的基本作用)

什么是B-Tree

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

MySQL质量优化-慢查询剖判、优化索引和陈设

发表评论

电子邮件地址不会被公开。 必填项已用*标注