mysql基础

在这里插入图片描述

  • List item
  • DCL(Data Control Language):数据控制语言 GRANT:授权
  • DDL(Data Definition Language) :数据库定义语言 CREATE
  • DML(Data Manipulation Language):数据操纵语言 INSERT UPDATE
  • DQL(Data Query Language):数据查询语言 SELECT

事务并发问题

  1. 脏读:事务A读取了事务B更新的数据,然后B回滚操作,那么A读取到的数据是脏数据
  2. 不可重复读-行锁:事务 A 多次读取同一数据,事务 B 在事务A多次读取的过程中,对数据作了更新并提交,导致事务A多次读取同一数据时,结果 不一致
  3. 幻读-表锁:系统管理员A将数据库中所有学生的成绩从具体分数改为ABCDE等级,但是系统管理员B就在这个时候插入了一条具体分数的记录,当系统管理员A改结束后发现还有一条记录没有改过来,就好像发生了幻觉一样,这就叫幻读。
事务隔离级别脏读不可重复读幻读
读未提交
不可重复读
可重复读
串行化

存储引擎

  • 事务
    如果应用需要事务支持,那么InnoDB(或者XtraDB)是目前最稳定并且通过验证的选择。如果不需要事务,并且主要是SELECT和INSERT操作,那么MyISAM是不错的选择,一般日志型比较符合这一特征。
  • 备份
    备份的需求也会音响存储引擎的选择。如何可以定期地关闭服务器来执行备份,那么备份的因素可以忽略。反之,如果需要在线热备份,那么选择InnoDB就是基本的要求。
  • 崩溃恢复
    数据量比较大的时候,系统崩溃如何快速恢复是一个需要考虑的问题。相对而言,MyISAM奔溃后发生虽坏的概率要比InnoDB高得多,而且恢复速度也要慢。因此,即使不需要事务支持,很多人也选择InnoDB引擎,这是一个非常重要的因素。
  • 特有的特性
    最后,有些应用可能依赖一些存储引擎所独有的特性或者优化,比如很多应用依赖聚簇索引的优化。另外,MySql中也只有MyISAM支持地理空间搜索。如果一个存储引擎拥有一些关键的特征,同时却又缺乏一些必要的特征,那么有时候不得不做折中的考虑,或者在架构上做一些取舍。
  • 锁的竞争

调优

  1. 慢查询日志
  2. 使用show profile
  3. 使用show status/ explain *
  4. 使用show global status *
  5. 使用show processlist

数据类型

  • timestamp和datetime
    timestamp:时间戳,时间和时区相关,相对于timestamp长度更短
    datetime:普通时间,建议使用
  • text 和 blob
  • enum 和 set 不建议使用
CREATE TABLE `a` (
 `id` int(11) NOT NULL AUTO_INCREMENT,
 `name` set('1','2') DEFAULT '',
 `delete_flag` enum('1','2') DEFAULT NULL,
 PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
此时name只能有12,可多选,大脑delete_flag只能为1或者2

全文索引

针对text类型

InnoDB缓冲池

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值