文章分类 - 数据库
摘要:1. film表 字段 说明 film_id 电影id title 电影名称 description 电影描述信息 CREATE TABLE IF NOT EXISTS film ( film_id smallint(5) NOT NULL DEFAULT '0', title varchar(25
阅读全文
摘要:数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用 MySQL 保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过 32 个字符 临时库表必须以 tmp_为前缀并以日期为后缀,备份表必须以 b
阅读全文
摘要:本篇文章会分析下一个 sql 语句在 MySQL 中的执行流程,包括 sql 的查询在 MySQL 内部会怎么流转,sql 语句的更新是怎么完成的。 在分析之前我会先带着你看看 MySQL 的基础架构,知道了 MySQL 由那些组件组成已经这些组件的作用是什么,可以帮助我们理解和解决这些问题。 一
阅读全文
摘要:一、Redis 1. 简介 单线程为什么这么快? 单线程Redis注意事项 一次只运行一条命令 拒绝长(慢)命令,例如:keys、flushall、flushdb、slow lua script、mutil/exec、operate big value(collection) Redis其实不是单线
阅读全文
摘要:基本操作 数据库操作 表的操作 数据操作 字符集编码 数据类型(列类型) 列属性(列约束) 建表规范 SELECT UNION 子查询 连接查询(join) TRUNCATE 备份与还原 视图 事务(transaction) 锁表 触发器 SQL编程 存储过程 用户和权限管理 表维护 杂项 基本操作
阅读全文
摘要:Mysql 的 limit 用法 SELECT * FROM table LIMIT [offset,] rows | rows OFFSET offset LIMIT 接受一个或两个数字参数。参数必须是一个整数常量。如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行
阅读全文
摘要:定义作用个数 主键 唯一标识一条记录,不能有重复的,不允许为空 用来保证数据完整性 主键只能有一个 外键 表的外键是另一表的主键,外键可以有重复的,可以是空值 用来和其他表建立联系用的 一个表可以有多个外键 索引 该字段没有重复值,但可以有一个空值
阅读全文
摘要:https://www.cnblogs.com/s-b-b/p/8334593.html 聚集索引一定是唯一索引。但唯一索引不一定是聚集索引。 聚集索引,在索引页里直接存放数据,而非聚集索引在索引页里存放的是索引,这些索引指向专门的数据页的数据。
阅读全文
摘要:Redis简介 Redis Redis 是一个速度非常快的非关系型数据库,他可以存储键(key)与5种不同类型的值(value)之间的映射,可以将存储在内存中的键值对数据持久化到硬盘中。 与 Memcached 相比 两者都可用于存储键值映射,彼此性能也相差无几 Redis 能够自动以两种不同的方式
阅读全文
摘要:1. 如何解决秒杀的性能问题和超卖的讨论 抢订单环节一般会带来2个问题: 1、高并发 比较火热的秒杀在线人数都是10w起的,如此之高的在线人数对于网站架构从前到后都是一种考验。 2、超卖 任何商品都会有数量上限,如何避免成功下订单买到商品的人数不超过商品数量的上限,这是每个抢购活动都要面临的难题。
阅读全文
摘要:MySQL/InnoDB 的加锁,一直是一个面试中常问的话题。例如,数据库如果有高并发请求,如何保证数据完整性?产生死锁问题如何排查并解决?在工作过程中,也会经常用到,乐观锁,排它锁等。 注:MySQL 是一个支持插件式存储引擎的数据库系统。下面的所有介绍,都是基于 InnoDB 存储引擎,其他引擎
阅读全文
摘要:1. 使用 Explain 进行分析 Explain 用来分析 SELECT 查询语句,开发人员可以通过分析 Explain 结果来优化查询语句。 比较重要的字段有: select_type : 查询类型,有简单查询、联合查询、子查询等 key : 使用的索引 rows : 扫描的行数 mysql>
阅读全文
摘要:主从复制 主要涉及三个线程:binlog 线程、I/O 线程和 SQL 线程。 binlog 线程 :负责将主服务器上的数据更改写入二进制文件(binlog)中。 I/O 线程 :负责从主服务器上读取二进制日志文件,并写入从服务器的中继日志中。 SQL 线程 :负责读取中继日志并重放其中的 SQL
阅读全文
摘要:简单来说,数据的切分就是通过某种特定的条件,将我们存放在同一个数据库中的数据分散存放到多个数据库(主机)中,以达到分散单台设备负载的效果,即分库分表。 数据的切分根据其切分规则的类型,可以分为如下两种切分模式。 垂直(纵向)切分:把单一的表拆分成多个表,并分散到不同的数据库(主机)上。 水平(横向)
阅读全文
摘要:1. 什么是联合索引 两个或更多个列上的索引被称作联合索引,联合索引又叫复合索引。对于复合索引:Mysql 从左到右的使用索引中的字段,一个查询可以只使用索引中的一部份,但只能是最左侧部分。 例如索引是key index (a,b,c),可以支持[a]、[a,b]、[a,b,c] 3种组合进行查找,
阅读全文
摘要:B+、B-、B*、B树介绍 B+ 树只有叶节点存放数据,其余节点用来索引,而 B- 树是每个索引节点都会有 Data 域。所以从 InooDB 的角度来看,B+ 树是用来充当索引的,一般来说索引非常大,尤其是关系性数据库这种数据量大的索引能达到亿级别,所以为了减少内存的占用,索引也会被存储在磁盘上。
阅读全文
摘要:1. 索引使用的场景 索引能够轻易将查询性能提升几个数量级。 索引是在存储引擎层实现的,而不是在服务器层实现的,所以不同存储引擎具有不同的索引类型和实现。 2. B Tree 原理 B-Tree 定义一条数据记录为一个二元组 [key, data],B-Tree 是满足下列条件的数据结构: 所有叶节
阅读全文
摘要:1. 整型 TINYINT, SMALLINT, MEDIUMINT, INT, BIGINT 分别使用 8, 16, 24, 32, 64 位存储空间,一般情况下越小的列越好。 INT(11) 中的数字只是规定了交互工具显示字符的个数,对于存储和计算来说是没有意义的。 2. 浮点数 FLOAT 和
阅读全文
摘要:对于初学者来说我们通常不关注存储引擎,但是 MySQL 提供了多个存储引擎,包括处理事务安全表的引擎和处理非事务安全表的引擎。在 MySQL 中,不需要在整个服务器中使用同一种存储引擎,针对具体的要求,可以对每一个表使用不同的存储引擎。 简介 MySQL 中的数据用各种不同的技术存储在文件(或者内存
阅读全文
摘要:1. 串行化 (Serializable) 所有事务一个接着一个的执行,这样可以避免幻读 (phantom read),对于基于锁来实现并发控制的数据库来说,串行化要求在执行范围查询的时候,需要获取范围锁,如果不是基于锁实现并发控制的数据库,则检查到有违反串行操作的事务时,需回滚该事务。 2. 可重
阅读全文