事务隔离级别
概述一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行(如果单元中某个sql执行失败,整个单元将会回滚)转账: 12update table set余额=500 where name=’张三丰’update table set余额=1500 where name=’郭襄’ 如果单独执行,数据库出现意外挂掉只执行了一个就会很尴尬 m
概述一个或一组sql语句组成一个执行单元,这个执行单元要么全部执行,要么全部不执行(如果单元中某个sql执行失败,整个单元将会回滚)转账: 12update table set余额=500 where name=’张三丰’update table set余额=1500 where name=’郭襄’ 如果单独执行,数据库出现意外挂掉只执行了一个就会很尴尬 m
对于现代网络来说,数据是无价的,需要好好维护,为了避免误删、误更等的发生,需要一个数据备份的方案进行维护。 备份方式mysql按照备份恢复方式分为逻辑备份和物理备份 逻辑备份:是备份sql语句,在恢复的时候执行备份的sql语句实现数据库数据的重现。 物理备份:就是备份数据文件了,比较形象点就是cp下数据文件,但真正备份的时候自然不是的cp这么简单。 mysql按照数据库的运行状态分为热备,冷备
连接层 connection poolC/S程序都需要的:连接处理,身份验证,安全性 服务层(业务逻辑处理层)sql layer权限判断,sql解析,行计划优化, query cache 的处理以及所有内置的函数(如日期,时间,数学运算,加密)等等。各个存储引擎提供的功能都集中在这一层,如存储过程,触发器,视图等 架构 connectors不同语言中与sql的交互 Management Se
口诀orz 1.全值匹配我最爱 2.最佳左前缀法则 3.带头大哥不能死 4.中间兄弟不能断 5.索引列上不计算 6.范围之后全失效 7.百分like加右边 8.字符串里有引号 索引失效的情况 1.不在索引列上做任何操作(计算,函数,(自动or手动)类型转换),会导致索引失效而转向全表扫描 12explain select * from staffs where name=’july’;
单表 1.创建表 123456789create tables if not exists article( id int unsigned primary key not null auto_increment, author_id int unsigned not null, category_id int unsigned not null, comments int unsigned no
索引是什么?是帮助mysql高效获取数据的数据结构,可以得到索引的本质:索引是数据结构。(btree) 1.排好序的快速查找数据结构 2.在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。 3.当你删除数据后,某些索引指向就会失效。这个时候需要锁表重构索引。 4.为什么update、insert慢,因为数
索引优化分析性能下降sql慢:(执行时间长,等待时间长) 1.select语句写的烂,各种连接加子查询 2.索引失效,建的索引没用,创建单索引和复合索引 1create index idx_user_name (idx_tablename_indexname) on user(name) 查询用的多的字段建立联合建立复合索引 1create index idx_user_nameEmail o
文件分类参数文件 概述告诉MySQL实例启动时在哪里可以找到数据库文件,并且指定某些初始化参数,这些参数定义了某种内存结构的大小等设置,还会介绍各种参数的类型。 路径 1/var/lib/mysql/ 相关命令 1234show [global] variables like "%xxxxx%";set key value;s
停机部署1.挂牌停机通告2.通过写的脚本(直接按游标取出数据进行迁移)按照规定逻辑进行分库分表(也可以使用工具)3.重写中间件按照逻辑访问数据库4.上线 优点 比较容易,不用考虑这时的用户操作,无脑迁移数据 缺点 系统必须停机,客户体验差 必须在规定时间完成迁移及数据校验 不停机部署数据双写迁移法1.老库和新库同时insert/update/delete,然后将老数据批量迁移到新库,最
磁盘io与预读考虑到磁盘IO是非常高昂的操作,计算机操作系统做了一些优化,当一次IO时,不光把当前磁盘地址的数据,而是把相邻的数据也都读取到内存缓冲区内,因为局部预读性原理告诉我们,当计算机访问一个地址的数据的时候,与其相邻的数据也会很快被访问到。每一次IO读取的数据我们称之为一页(page),具体一页有多大数据跟操作系统有关,一般为16k,也就是我们读取一页内的数据时候,实际上才发生了一次IO,