数据库
程序员姜戈
专注于云计算、存储、分布式数据库技术栈,分享Linux、网络、安全、编程语言、算法、架构等技术干货。欢迎关注个人公众号[云计算通俗讲义]!
展开
-
MySQL filesort原理及优化
微信公众号:云计算通俗讲义持续输出技术干货,欢迎关注!01概述在MySQL中的ORDER BY有两种排序实现方式: 1、利用有序索引获取有序数据; 2、文件排序。在使用explain分析查询的时候,利用有序索引获取有序数据显示Using index。如果MySQL在排序的时候没有使用到索引那么就会输出using filesort,即使用文件排序。文件排序是通过相应的排序算法,将取得的数据在内存中进行排序:MySQL需要将数据在内存中进行排序,...原创 2020-11-25 19:27:30 · 320 阅读 · 0 评论 -
MySQL binlog原理及应用
01概述Binlog它记录了所有的DDL和DML(除了数据查询语句)语句,以事件(EVENT)形式记录,还包含语句所执行的消耗的时间,MySQL的二进制日志是事务安全型的。一般来说开启二进制日志大概会有1%的性能损耗(MySQL官方测试数据),虽然会降低性能,但是binlog可以用于主从复制(replication)和point-in-time的恢复,所以还是很有必要开启的。 查看:SHOWBINLOGEVENTIN'mysqld.00001'\G; ...原创 2020-11-20 00:27:12 · 312 阅读 · 0 评论 -
数据库索引原理及优化
01概述索引是帮助MySQL高效获取数据的排好序的数据结构,用于快速找出某个列中有一特定值的行。通过上述定义可以理解索引三个基本特性: 1、索引的作用是为了追求高效查找;2、索引是一种数据结构,且是有序的;3、索引用于快速查找某一个特定值的行(非特定值情况,即模糊匹配的情况是无效的)。不使用索引,MySQL必须从第一条记录开始读完整个表,直到找到相关的行,表越大,查询数据所花费的时间就越多(全表扫描)。如果表中查询的列有一个索引,MyS...原创 2020-11-15 00:17:45 · 451 阅读 · 0 评论 -
面试官:介绍一下数据库事务
01概述事务一般是指数据库事务,简称事务,是一组不可分割的操作。事务会把数据库从一种一致状态转换为另一种一致状态。在数据库提交工作时,可以保证要么所有修改都保存了,要么所有修改都不保存(事务是数据库区别于文件系统的重要特征之一)。 说明:1、每个SQL语句都是一个事务;2、事务只对DML语句有效,对于DQL无效。用转账的例子来说,A 账户要给 B 账户转 100块,这中间至少包含了两个操作:1、A 账户减100块...原创 2020-11-15 00:17:58 · 601 阅读 · 0 评论 -
数据库备份与恢复
01背景备份恢复的几个重要理由:1、灾难恢复2、审计3、测试4、误操作恢复02概述2.1 frm与表相关的元数据信息都存放在.frm文件中,主要是表结构的定义信息,不论什么存储引擎,每一个表都会有一个以表名命名的.frm文件。2.2 .MYD和.MYI .MYD:MY Data,是MyISAM存储引擎专用的用于存放MyISAM表的数据; .MYI:MY Index,也是专属于MyISAM存储引擎的主要...原创 2020-11-15 00:19:01 · 278 阅读 · 0 评论 -
MySQL主从复制
01背景之所以引入主从复制,是基于实际业务需求考虑的: 1、存在这样的一种场景:有一句SQL语句需要锁表,导致系统暂时无法提供读服务,这样就很影响运行中的业务,如果使用主从复制,让主库负责写操作,从库负责读操作,这样,即使主库出现了锁表的情景,通过读从库也可以保证业务的正常运作; 2、从库可以做数据的热备; 3、架构的扩展,业务量越来越大,I/O访问频率过高,单机无法满足,此时多从库存储,可以提高单个机器的I/O性能。02概述复制是指将主数据库的...原创 2020-11-15 00:18:52 · 84 阅读 · 0 评论 -
MySQL数据库锁机制
01概述数据库事务ACID中的隔离性是通过锁和MVCC实现的,锁用于并发写操作,MVCC用于并发读操作。因此,数据库锁是控制并发的一种手段。02分类2.1 粒度锁/范围锁根据锁的粒度,可以分为:记录锁:锁住行表锁:锁住表页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般数据库锁:锁住整个库2.2 算法锁算法锁(基于行锁的算法):记录锁,间隙锁,临键锁。注:...原创 2020-11-15 00:18:46 · 171 阅读 · 0 评论 -
分布式锁实现方案
01背景在单机系统中,多个线程同时访问某个共享资源时,可以采用线程间加锁保证数据一致性。但是,在分布式系统中,程序运行在多台机器上,各个节点之间无从知晓共享资源的锁定状态,即这种共享资源已经不是线程级别的,而是进程之间的。此时,就需要引入分布式锁,以实现多个客户端互斥访问共享资源。需要加锁的场景需要满足以下条件: 1、共享资源;2、共享资源互斥;3、多任务环境。分布式锁的思路是:在系统中提供一个全局唯一的针对共享资源获取锁的...原创 2020-11-15 00:18:38 · 80 阅读 · 0 评论