mysql优化大全_Mysql的优化大全

Mysql的优化大全

Mysql的优化大全

文章目录知识点1.Decimal

2.char和varchar

3.范式

4.数据库引擎的选择:

5.锁扩展

索引

参考博文 1 。

b973bc3cc4b5c1d7d7c0d88e2f4fc03d.png

知识点

1.Decimal

DECIMAL(N,M)中M值的是小数部分的位数,若插入的值未指定小数部分或者小数部分不足M位则会自动补到M位小数,若插入的值小数部分超过了M为则会发生截断,截取前M位小数。N值得是整数部分加小数部分的总长度,也即插入的数字整数部分不能超过N-M位,否则不能成功插入,会报超出范围的错误。

2.char和varchar

1、char的长度是不可变的,而varchar的长度是可变的

??字段b:类型char(10), 值为:abc,存储为:abc (abc+7个空格)

??字段d:类型varchar(10), 值为:abc,存储为:abc (自动变为3个的长度)

2、超出长度自动截取

??字段c:类型char(3), 值为:abcdefg,存储为:abc(defg自动删除)

??字段e:类型varchar(3), 值为:abcdefg,存储为:abc (defg自动删除)

3、var(10)和char(10),都表示可存10个字符,无论存放的是数字、字母还是UTF8汉字(每个汉字3字节),都可以存放10个

4、char最多可以存放255个字符

??varchar的最大长度为65535个字节,varchar可存放的字符数跟编码有关

?? 字符类型若为gbk,每个字符最多占2个字节,最大长度不能超过32766个字符

??  字符类型若为utf8,每个字符最多占3个字节,最大长度不能超过21845个字符

5、char和varchar的最大长度限制是mysql规定的

3.范式

第二范式

??对主键的部分依赖:某个字段依赖复合主键中的一部分。

??解决方案:新增一个独立字段作为主键。

第三范式

??消除对主键的传递函数依赖。例子: 由主键id确定了什么课,又有什么课确定了什么老师,这就是传递函数依赖。

??解决方案:将表拆分成两张表。

4.数据库引擎的选择:

f5747cfd49cbf752c72c0587ca3b0ed3.png

5.锁扩展

表级锁(table-level lock):lock tables ,... read/write,unlock tables ,...。其中read是共享锁,一旦锁定任何客户端都不可读;write是独占/写锁,只有加锁的客户端可读可写,其他客户端既不可读也不可写。锁定的是一张表或几张表。

行级锁(row-level lock):锁定的是一行或几行记录。

共享锁:select * from where LOCK IN SHARE MODE;,

对查询的记录增加共享锁;select * from where FOR UPDATE;,对查询的记录增加排他锁。

间隙锁:这里值得注意的是:innodb的行锁,其实是一个子范围锁,依据条件锁定部分范围,而不是就映射到具体的行上,因此还有一个学名:间隙锁。比如select * from stu where id < 20 LOCK IN SHARE MODE会锁定id在20左右以下的范围,你可能无法插入id为18或22的一条新纪录。

索引

索引相关博文 ,点击这里

Mysql的优化大全相关教程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值