MySQL
MySQL
阿云_
这个作者很懒,什么都没留下…
展开
-
MySQL开发约束
MySQL 表设计规范明确规定:禁用存储过程,函数,触发器,视图,外键,所有逻辑业务上实现必须使用 innodb 引擎,不允许用myisam。统一utf8mb4编码,不能gbk。必须要有主键,主键如无特殊情况,必须自增整形。例如: INT或者 BIGINT类型,如果是分片表,主键自增可由中间件实现。所有字段要求使用not null,字段都定义为: not null default ‘ 合理默认值’ 。需要多表 join的字段,数据类型、长度必须保持绝对一致,才能用到索引。例如:原创 2020-10-24 17:50:42 · 294 阅读 · 0 评论 -
高性能数据库之 分库分表
前言前面的读写分离,分散了数据库读写操作的压力,没有分散存储压力,当数据量很大时,单台数据库服务器就会出现性能瓶颈,主要在以下几方面:数据量太大,读写性能下降数据文件也会变得很大, 备份恢复时间变长所以,需要控制单台数据库服务器数据量大小,分库分表,他来了!先从分库开始说起。分库一般都是业务分库,也就是按照业务模块将数据分散到各个数据库,比如一个电商网站,可以分为用户、商品和订单库...原创 2020-03-21 18:46:46 · 461 阅读 · 0 评论 -
高性能数据库之 读写分离
前言随着业务的不断发展,单机数据库已经不能满足业务需要。接下来讲讲数据库集群的几种方式:读写分离和分库分表。读写分离原理读写分离的原理就是将数据库的读写操作分散在不同的节点上。实现方式多台数据库搭建一个集群,一台数据库做主库,其他数据库做从库。主库负责写操作,从库负责读操作主库通过复制将数据的变更同步到从库,每台节点都有完整的数据需要考虑的问题复制延迟主库...原创 2020-03-21 18:42:08 · 395 阅读 · 1 评论 -
详解MySQL行锁、死锁和死锁检测
前言上一篇文章中,介绍了 MySQL 的全局锁和表级锁,这篇文章讲解行锁。MySQL 的行锁是在引擎层由各个引擎自己实现的,但并不是所有的引擎都支持行锁,比如 MyISAM 引擎就不支持行锁。不支持行锁意味着并发控制只能使用表锁,对于这种引擎的表,同一张表上任何时刻只能有一个更新在执行,这就会影响到业务并发度。 InnoDB 是支持行锁的,这也是 MyISAM 被 InnoDB 替代的主要...转载 2019-04-07 13:37:22 · 3879 阅读 · 0 评论 -
MySQL 全局锁和表锁
前言今天讨论的是 MySQL 的锁,数据库锁设计的初衷是处理并发问题,作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则,而锁就是用来实现这些访问规则的重要数据结构。根据加锁的范围,MySQL 里面的锁大致可以分为全局锁、表级锁和行锁三类。今天这篇文章,作者会介绍全局锁和表级锁,而关于行锁的内容,会在下一篇文章中详细介绍。锁的设计比较复杂,文章不会涉及锁的具...转载 2019-03-25 21:01:50 · 547 阅读 · 2 评论 -
深入浅出 MySQL 索引(下)
前言在上一篇文章中,作者介绍了 InnoDB 索引的数据结构模型,今天继续聊聊跟 MySQL 索引有关的概念。在开始文章之前,我们先来看一个问题:在下面这个 表 T 中,如果我执行 select * from T where k between 3 and 5,需要执行几次树的搜索操作,会扫描多少行?下面是这个表的初始化语句。create table T( ID in...转载 2019-02-28 21:49:28 · 659 阅读 · 0 评论 -
深入浅出 MySQL 索引(上)
前言本篇是专栏中的第四篇,此系列文章是学习《MySQL实战》后,总结出来的笔记文章。上一篇讲了MySQL事务隔离级别,本篇来讲讲索引。提到数据库索引,我想读者并不陌生,在日常工作中会经常接触到。比如某一个 SQL 查询比较慢,分析完原因之后,可能会出现“给某个字段加个索引吧”之类的声音,但到底什么是索引,索引又是如何工作的呢?索引是数据库系统里面最重要的概念之一,所以我希望读者南信看完。在...原创 2019-02-27 21:41:52 · 702 阅读 · 3 评论 -
MySQL事务隔离级别详解
前言提到事务,你肯定不会陌生,最经典的例子就是转账,甲转账给乙100块,当乙的账户中到账100块的时候,甲的账户就应该减去100块,事务可以有效的做到这一点。在MySQL中,事务支持实在引擎层实现的,MySQL是一个支持多引擎的系统,但并不是所有引擎都支持事务。比如MySQL原生的 MyISAM 引擎就不支持事务,这也是 MyISAM 被取代的原因之一。隔离性事务的四大特性AC...转载 2018-12-27 00:45:23 · 15891 阅读 · 3 评论 -
一条SQL更新语句是如何执行的
前言本篇是专栏中的第二篇,此系列文章是学习《MySQL实战》后,总结出来的笔记文章。上一篇讲了一条SQL查询语句是如何执行的,本篇来讲解一条SQL更新语句的执行过程。之前你可能经常听DBA同事说:MySQL可以恢复半个月内任意一秒的状态,惊叹的同时,你是不是会感到好奇,这是怎么做到的呢?我们还是从一个表的一条更新语句说起,下面是这个表的创建语句,这个表有一个主键 ID 和一个整型字段c...原创 2018-12-12 23:14:34 · 2239 阅读 · 0 评论 -
一条SQL查询语句是如何执行的
前言你好,这是《深入学习MySQL》专栏中的第一篇文章,这个系列的文章都是一些我在学习中的笔记,学习这些文章可以帮助你更好得了解MySQL,在使用MySQL时更得心应手。我们在执行数据操作的时候,都是提供一个SQL语句,得到一个结果,但是不知道其中得执行过程。这篇文章就带着你了解内部的秘密。下面是林晓斌大佬给出得MySQL基本架构示意图,从中可以看到SQL语句在MySQL得各个功能模块...原创 2018-12-08 22:46:50 · 594 阅读 · 0 评论