锁
锁 1. 概述 锁 是计算机协调多个进程或线程 并发访问某一资源 的机制。在程序开发中会存在多线程同步的问题,当多个线程并发访问某个数据的时候,尤其是针对一些敏感的数据(比如订单、金额等),我们就需要保证这个数据在任何时刻 最多只有一个线程 在访问,保证数据的 完整性 和 一致性 。在开发过程中加锁是为了保证数据的一致性,这个思想在数据库领域中同样…
事务
事务 事务是数据库区别于文件系统的重要特性之一,当我们有了事务就会让数据库始终保持一致性,同时我们还能通过事务的机制恢复到某个时间点,这样可以保证已提交到数据库的修改不会因为系统崩溃而丢失 1. 概述 1.1 存储引擎支持情况 SHOW ENGINES 命令来查看当前 MySQL 支持的存储引擎都有哪些,以及这些存储引擎是否支持事务 能看出在 My…
索引优化与查询优化
索引优化与查询优化 1. 数据准备 学员表插50万条,班级表插1万条 CREATE DATABASE atguigudb2; USE atguigudb2; 步骤1:建表 CREATE TABLE `class` ( `id` INT(11) NOT NULL AUTO_INCREMENT, `className` VARCHAR(30) DEFA…
链表
链表 1. 剑指 Offer 52. 两个链表的第一个公共节点 题目地址:LeetCode 注意: 如果两个链表没有交点,返回null 在返回结果后,两个链表仍须保持原有的结构 可假定整个链表结构中没有循环 程序尽量满足O(n)时间复杂度,且仅用O(1)内存 解题思路: 只有当链表headA和headB都不为空时,两个链表才可能相交。因此首先判断链…
网络层
网络层 1. 概述 网络层的主要任务是实现网络互连,进而实现数据包在各网络之间的传输 要实现网络层任务,需要解决以下主要问题: 网络层向运输层提供怎样的服务(可靠还是不可靠) 网络层对分组丢失、分组失序、分组重复等传输错误采取措施,使得接收方能正确接受发送方发送的数据,就是可靠传输;反之,如果什么措施也不采取,则是不可靠传输 网络寻址问题 路由选择…
性能分析工具的使用
性能分析工具的使用 在数据库调优中,我们的目标是响应时间更快, 吞吐量更大。利用宏观的监控工具和微观的日志分析可以帮我们快速找到调优的思路和方式 1. 数据库服务器的优化步骤 当我们遇到数据库调优问题的时候,该如何思考呢?这里把思考的流程整理成下面这张图 整个流程划分成了观察(Show status)和行动(Action)两个部分。字母 S 的部分…
索引
索引 1. 概述 MySQL 官方对索引的定义为:索引(Index)是帮助 MySQL 高效获取数据的数据结构 索引的本质:索引是数据结构。你可以简单理解为 “排好序的快速查找数据结构”,满足特定查找算法。这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现 高级查找算法 索引是在存储引擎中实现的,因此每种存储引擎的索引不一定完全相…
Linux
Linux 前言 服务器:一个用于独立运行项目的电脑 操作系统:windows、linux、ios、安卓、鸿蒙 linux:基于命令的操作系统,权限控制系统非常严格 windows:基于图形页面的操作(支持命令行操作CMD) 开源 / --> 根目录 root --> 超级用户 Linux(centos)操作系统会默认设置一个超级管理员…
存储引擎
存储引擎 1. 概述 为了管理方便,人们把连接管理、查询缓存、语法解析、查询优化这些并不涉及真实数据存储的功能划分为MySQL server的功能 把真实存取数据的功能划分为存储引擎的功能。所以在 MySQL server 完成了查询优化后,只需按照生成的执行计划调用底层存储引擎提供的 API, 获取到数据后返回给客户端就好了 MySQL 中提到了…
逻辑架构
逻辑架构 1. 逻辑架构剖析 1.1 服务器处理客户端请求 首先 MySQL 是典型的 C/S 架构,即 Clinet/Server 架构,服务端程序使用的 mysqld 不论客户端进程和服务器进程是采用哪种方式进行通信,最后实现的效果是:客户端进程向服务器进程发送一段文本(SQL 语句),服务器进程处理后再向客户端进程发送一段文本(处理结果) 那…