mysql

# mysql
mysql是目前最流行的关系型数据库管理系统,由瑞典mysqlAB公司开发,目前属于oracl公司。由于体积小、速度快、总体拥有成本低,尤其是开发源码这一块导致mysql的忠诚用户很多。
## mysql索引有哪些注意事项
### 1、注意索引失效的情况
查询条件包含or
隐式类型转换
like通配符同时%在最左边
对索引列进行逻辑运算
联合索引查询,查询的时候条件列不是联合索引的第一个列
索引列用 ==、!=、is null、is not null、+、-、*、/等等等等
### 2、哪些情况不适合用索引
数据量少
更新频率较大
离散性较低如性别
## sql优化
语句优化
索引
合理设计表字段
主从架构
分库分表
## 分库分表方案
垂直分库
根据表业务不同,分表到不同库
垂直分表
根据字段不同,增加扩展表或者同级表
水平分库
以字段为依据,按照一定策略(hash,range),将一个库中的数据拆分到多个库
水平分表
以字段为依据,按照一定策略(hash,range),将一个表中的数据拆分到多个表
## 高并发情况下,如何保证合理的修改一条数据:乐观锁和悲观锁
### 乐观锁
允许一条记录被多个线程修改,但是事务提交的时候,根据版本号决断是不是可以提交事务
### 悲观锁
select * from kol_relation for update
查询加锁,查询到的这些记录其他线程都不可修改,如果用到了索引就是行级锁,否则就是表记锁
## explan分析sql执行
id:该语句的唯一标识
select_type:查询类型
table:表名
partitions:匹配的分区
type:联接类型
possible_keys:可能的索引选择
key:实际选择的索引
key_len:索引的长度
ref:索引的哪一列被引用了
rows:估计要扫描的行
filtered:表示符合查询条件的数据百分比
extra:附加信息
## 事务的acid
原子性:事务中的操作要么全部成功,要么全部失败
一致性:事务从一个一致性状态变为另一个一致性状态
隔离性:多个事务之间的数据要相互隔离,不能干扰
持久化:事务一旦被提交,将会持久化到数据库
## 复合索引查询注意事项
最左原则:复合索引可以字段分开查,但是支持的组合必须是1、12、123 这种
## 数据库自增主键的id出现什么问题
分库分表情况下可能会导致重复,建议使用uuid
## shading jdbc和my cat干嘛的
分库分表
## mysql常用的集群架构:
主从同步、一主多从、读写分离
### 对于产生的主从数据不一致问题怎么解决
1、忽略,例如百度搜索、淘宝订单、qq消息等等都支持此方案,画外音:如果业务同意,用此法
2、读写压力都放到主库,增加cache来提升性能
3、写数据到主库,然后增加一个 库:表:id的缓存数据,从库查询之前先查询cache,若有,从主库查询
## 应用程序是怎么连接到mysql的
1、基于tcp的三次握手确认
2、发送数据库账号密码,等待应答
3、完成认证后,可以执行sql
4、tpc挥手,断开连接
## mysql语句的执行流程
1、连接器工作,认证
2、查询缓存,是否有相同语句的key,有就直接返回
3、分析器,解析sql
4、优化器,优化sql,优化索引、执行顺序等等
5、执行器,执行
## myisam和inndb的区别
inndb支持事务,myisam不支持
inndb支持行级锁,myisam不支持
inndb支持外键,myisam不支持
inndb的主键范围更大,大约是myisam的二倍
不带where的count命令,myisam更快,因为myisam有一个计数器概念
## 时间字段如何选择
dataTime字段一般用来记录开始时间
timestamp字段一般记录修改时间
## mysql货币存储用什么结构
decimal和numric
## blob和text
blob一般存储二进制,text存储大字符串
## 数据库三大范式
1、字段不可区分
2、范式1的基础上,每个字段完全依赖于主键
3、范式2的基础上,非主键字段只依赖于主键
## mysql有关权限的表
usr 允许连接到数据库的用户
db  记录各个账号在数据库上的操作权限
table_priv 记录数据库表级的操作权限
colums_priv 记录数据库表中字段的操作权限
host 记录可以连接到数据库的设备
## 索引的优缺点
### 优点:

唯一所以可以保证唯一性
### 缺点:
占空间大
需要维护成本
## 索引有哪几种类型
主键索引:非空且不重复,一个表只能有一个主键
非空索引:字段不为空
唯一所以:同主键,不过一个表可以有多个
普通索引:基本的索引类型,可以为null
全文索引:目前搜索引擎的关键技术,对文本内容进行分词、搜索
组合索引:多个列并成一个索引
### 百万级别删除数据怎么删
1、先删除索引
2、再删除数据
3、再建立索引
## 如何尽量避免死锁
1、如果有不同程序会操作相同的多个表,尽可能保证相同查表顺序
2、在同一个事务中,尽量一次性对涉及的表全部加锁
3、升级锁颗粒度
## 慢日志查询
建议平时关闭,调优或排查开启
show variables like '%slow_query_log%'

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值