随笔分类 - MySql
摘要:MySQL的存储结构 表存储结构 单位:表>段>区>页>行 在数据库中, 不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说存储空间的基本单位是页。 一个页就是一棵树B+树的节点,数据库I/O操作的最小单位是页,与数据库相关的内容都会存储在页的结构里。 B+树索引结构 在一棵B+树中,每
阅读全文
摘要:索引的缺点: 创建索引和维护索引要耗费时间 ,时间随着数据量的增加而增加。 占用大量磁盘空间,今天发现公司的一个大表,索引占用的空间竟然是行数据占用空间的125%。 当对表中的数据进行增加、删除和修改的时候, 索引也要动态的维护 ,这样就降低了数据的维护速度。 创建索引的建议: 仅为必要的列创建索引
阅读全文
摘要:数据库锁的初衷是处理并发问题,当并发出现时,数据库要合理的控制资源的访问规则,而锁就是用来实现这些访问规则的数据结构。 mysql里面的锁大致可以分为 全局锁、表锁、行锁。 全局锁 就是对整个数据库实例加锁 ,mysql提供了一种加全局锁的方法,命令是 flush tables with read
阅读全文
摘要:关系型数据库的事务 具有ACID 四个特征: 原子性:一个事务的执行,要么全部提交成功,要么全部失败回滚,不能只执行一部分操作。 一致性:事务的执行不能破坏数据库数据的完整性和一致性,一个事务在执行前后,数据库都必须处于一致性状态。 隔离性:当数据库上有多个事务同时执行时,就有可能出现脏读、幻读、不
阅读全文
摘要:什么是sql注入 SQL注入是比较常见的网络攻击方式之一,它不是利用操作系统的BUG来实现攻击,而是针对程序员编写时的疏忽,通过SQL语句,实现无账号登录,甚至篡改数据库。 防止SQL注入,我们需要注意以下几个要点: 永远不要信任用户的输入。对用户的输入进行校验,可以通过正则表达式,或限制长度;检查
阅读全文
摘要:上篇文章 学习了 mysql的基础架构,理清了一条查询sql在mysql中的执行过程,其实update语句的执行过程也是大致相同的。 以下面的一条sql为例 (ID为主键) update T set b=b+1 where ID = 2 客户端通过连接器与mysql建立连接 删除要update表的缓
阅读全文
摘要:mysql基础架构 示意图 首先 mysql 大概分为 server层 和 存储引擎层 两个部分, 引擎的架构模式是插件形式的,mysql支持多种引擎如 InnoDB、MyISAM、Memory 等,其中 Innodb是应用最广泛的,mysql5.5.5版本后,将Innodb设为默认存储引擎。 连接
阅读全文
摘要:-- 查询 正在执行的事务:SELECT * FROM information_schema.INNODB_TRX; -- 查看正在锁的事务SELECT * FROM INFORMATION_SCHEMA.INNODB_LOCKS; -- 查看等待锁的事务SELECT * FROM INFORMAT
阅读全文