MySQL高级优化
文章平均质量分 64
mysql高级优化
CRUD战士
吾尝终日而思矣,不如须臾之所学也。
展开
-
MVCC多版本并发控制
读已提交 每次读都生成一次read view 可重复读只生成一次read view原创 2023-01-30 14:30:09 · 373 阅读 · 1 评论 -
mysql锁
mysql 锁原创 2023-01-28 12:01:02 · 682 阅读 · 0 评论 -
唯一索引范围查询锁 bug修复了
8.0.24版本 唯一索引范围查询锁 bug 修复了原创 2023-01-28 10:54:06 · 567 阅读 · 0 评论 -
事务日志undo log
逻辑上恢复,之前插入了一条数据,已经开辟了物理空间,回滚只是将该数据删除,物理空间还存在。原创 2022-12-27 16:59:32 · 965 阅读 · 0 评论 -
MySQL事务日志 (redo log)
事务的隔离性由实现。而事务的原子性、一致性和持久性由事务的来保证。REDO LOG 称为,提供再写入操作,恢复提交事务修改的页操作,用来保证事务的。UNDO LOG 称为,回滚行记录到某个特定版本,用来保证事务的。原创 2022-12-26 22:44:49 · 617 阅读 · 0 评论 -
SQL 事务基础
所谓事务就是用户定义的一个数据库操作序列,,是一个不可分割的工作单位。原创 2022-12-26 16:55:11 · 460 阅读 · 0 评论 -
数据库范式
(Sno,Cno) —> Grade 是完全函数依赖,学号不能得出成绩,学科号也不能推出成绩。(Sno,Cno) --> Sdept 是部分函数依赖,学号能推出院系。Sno --> Sdept —> Sloc 学号推出院系 , 院系推出宿舍楼,但 Sloc --/–>Sdept, Sdetp --/–> Sno , 学号能推出 宿舍楼。称之为传递依赖。K为 R (R表示一个域, U表示集合,F表示特定关系运算) 中的属性或者属性组合 若K --> U,则K是R的候选码。原创 2022-12-23 16:02:18 · 1037 阅读 · 0 评论 -
InnoDB详解2
InnoDB详解2原创 2022-12-23 11:56:10 · 1893 阅读 · 0 评论 -
InnoDB详解 (1)
聚簇索引:innodb的聚簇索引 根据主键构建索引,B+数的叶子节点存储一条完整的数据。若果创建的表没有主键,会隐式生成一个字段构建B+树。非聚簇索引:也叫二级索引或辅助索引,只记录主键值和二级索引的值。根据二级索引构建B+数,末尾记录了主键值。如一个学生表id是主键,包含age,name等字段。创建一个索引 idx_age ,叶子节点记录了age值和该表的主键id的值。此时查询语句select * from student where age >18;原创 2022-12-23 01:42:59 · 760 阅读 · 0 评论 -
count(*) count(1) count(具体字段)区别
count(*) count(1) 没有区别原创 2022-12-22 18:15:46 · 67 阅读 · 0 评论 -
索引覆盖与索引条件下推
上面查询语句第二个查询条件 是模糊查询 正常条件下不会使用索引,此时查询优化器进行成本分析发现 先在二级索引中进行模糊匹配在进行回表操作,比直接回表在模糊成本低,就先在二级索引中筛选。在用到二级索引时,要根据主键值进行回表操作查询数据,若此时,要查询的数据在二级索引中就存在,则不进行回表操作,称为索引覆盖。查询语句 select id,age from student where id> 1;mysql索引分为两类:聚簇索引,非聚簇索引(二级索引)比如:有一个联合索引 idxs_id_age。原创 2022-12-22 18:04:10 · 169 阅读 · 0 评论 -
join语句原理
hash join通过参数join_buffer_size来控制内存中的使用大小,超出join_buffer_size的设置会在磁盘上创建临时文件来处理。原创 2022-12-22 17:09:43 · 111 阅读 · 0 评论 -
SQL执行流程
选择成本最小的执行计划去执行。逻辑查询优化,物理查询优化。这种设置方式是session级别的,关闭此次连接后就失效了。8.0后删除了查询缓存,5.7 也是默认关闭。因此 MySQL 的 查询缓存命中率不高。(例如:空格、注释、 大小写),都会导。原创 2022-12-16 11:34:41 · 76 阅读 · 0 评论 -
MySQL主从复制搭建
一主一从架构搭建1 克隆虚拟机修改mac地址修改主机名vim /etc/hostname修改ip(改为静态ip)地址与UUIDvim /etc/syscnfig/network-scripts/ifcfg-ens33重启网络systemctl restart network修改MySQL sever 的UUIDvim /var/lib/mysql/auto.cnf#重启mysql服务systemctl restart mysqld2 配置主从机主原创 2022-03-28 00:15:35 · 2149 阅读 · 0 评论 -
二进制日志恢复数据
二进制日志恢复数据show variables like '%log_bin%';show binlog events in 'YanX-bin.000003';执行/usr/bin/mysqlbinlog --start-position=539 --stop-position=1046 --database=dbtest3 /var/lib/mysql/YanX-bin.000003 | /usr/bin/mysql -uroot -pXy072548. -v dbtest3原创 2022-03-27 17:35:22 · 1687 阅读 · 0 评论 -
索引失效情况补充
覆盖索引一个索引包含了满足查询结果的数据就叫做覆盖索引。非聚簇复合索引的一种形式,它包括在查询里的SELECT、JOIN和WHERE子句用到的所有列(即建索引的字段正好是覆盖查询条件中所涉及的字段)。简单说就是, 索引列+主键 包含 SELECT 到 FROM之间查询的列 。创建一个索引:create index idx_age_name on student(age,name);底层的存储结构如图。上一篇我们说到索引失效情况:索引失效情况优化器使不使用索引,由执行的方式的效率决原创 2022-03-20 00:10:14 · 319 阅读 · 0 评论 -
MySQL索引失效情况汇总
索引失效案例SQL语句是否使用索引,跟数据库版本,数据量,数据选择度都有关系。1 全值匹配EXPLAIN SELECT SQL_NO_CACHE * FROM student WHERE age = 30;EXPLAIN SELECT SQL_NO_CACHE * FROM student WHERE age = 30 and classId = 4;EXPLAIN SELECT SQL_NO_CACHE * FROM student WHERE age = 30 and classId =4 a原创 2022-03-17 23:50:19 · 785 阅读 · 0 评论 -
数据库索引设计原则
索引的设计原则一 适合创建索引的情况准备工作CREATE TABLE `student_info` (`id` INT(11) NOT NULL AUTO_INCREMENT,`student_id` INT NOT NULL ,`name` VARCHAR(20) DEFAULT NULL,`course_id` INT NOT NULL ,`class_id` INT(11) DEFAULT NULL,`create_time` DATETIME DEFAULT CURRENT_TIM原创 2022-03-16 12:10:24 · 1647 阅读 · 0 评论 -
Linux下安装mysql
1 mysql 的安装mysql 5.7 没有client-plugins安装时顺序弄错解决yum remove mysql-libs2. 安装完之后查看rpm -qa |grep mysql3. 查看mysql状态(是否启动)systemctl status mysql初始化mysqlmysqld --initialize --user=mysql查看密码cat /var/log/mysqld.log6. 启动mysql服务systemctl start原创 2022-03-04 15:23:18 · 627 阅读 · 0 评论