MySQL
文章平均质量分 85
MySQL
phygram
加油→_→
展开
-
MySQL的SQL预编译及防SQL注入
1. SQL语句的执行处理:SQL的执行可大致分为下面两种模式:“Immediate Statements” VS “Prepared Staements” :1.1 即时SQL:动态的根据传入的参数拼接SQL语句并执行,一条语句经过MySQL server层分析器、优化器、执行器组件,分别进行词法、语义解析、优化SQL语句、选择索引、制定执行计划、执行并返回结果。对SQL语句进行词法语义分析、优化SQL语句、选择索引、制定执行计划等一系列操作,称为 “对SQL语句的编译”。如上,一条SQL原创 2021-10-21 00:10:37 · 2645 阅读 · 0 评论 -
MySQL面试题总结
数据库设计的初衷是处理并发问题。1. MVCC是什么,怎么实现的?MVCC是多版本并发控制,是InnoDB存储引擎为了实现对“事务”的支持而实现的一种机制,可以将其看作是行级锁的一个变种,但是可以在很多情况下避免加锁操作,开销更低。MVCC的具体实现:每个事务都有一个由系统分配的id:transaction_id;单调递增,系统内唯一;每一行数据都有一个隐藏的列:row_trx_id,用于记录操作这行数据的事务的id,每一行数据都都有多个版本,它们组成一个“链表”式的结构,称为“undo log原创 2021-10-21 00:10:03 · 172 阅读 · 0 评论 -
MySQL的分库分表
1. 为什么要分库分表:提升性能,增加可用性。2. 何时需要进行分库:当一个库的查询QPS过高,数据库的读写性能已经成为了整个服务器性能瓶颈,此时就需要考虑拆库,通过多个库来分担单个数据库的连接压力。2.1 分多少个库合适?标注怎么选择?例如整个服务器对数据库的查询QPS 是 3500(每秒3500个请求),假设单库可以支撑 1000个连接数的话,那么就需要拆分成4个库。另外,没有分库时,如果单个数据库发生意外,发生故障的影响就是100%,分成4歌库,单个 库发生故障的影响就是25%,还有75原创 2021-10-13 00:09:16 · 260 阅读 · 0 评论 -
实践中如何优化MySQl
1. 先来搞清楚何为“MySQL优化”:实践项目中,我们使用MySQL的目的就是用来存储数据、查询数据,这个数据库的作用,而“优化”数据库,就是让它性能更高,我们用的更爽,即是:提升数据库的 插入、删除、更新数据的响应速度,提升数据库的查询速度。2. 优化手段:四条,从影响效果上逐次下降:2.1 SQL语句及索引的优化:索引优化:什么时候应该建立索引,建什么样的索引,如何避免索引失效。2.2 数据库表结构的优化:使用可以存下你的数据的最小数据类型(如tinyint);尽量避免NULL;使用原创 2021-10-13 00:05:46 · 267 阅读 · 0 评论 -
MySQL的存储引擎InnoDB与MyISAM对比
1. 区别:1.1 事务:InnoDB支持事务,MyISAM不支持事务;对于InnoDB,每一条SQL语句都默认封装成事务,自动提交,这样会影响速度,所以最好把多条SQL语句放在begin和commit之间,组成一个事务;1.2 外键:InnoDB支持外键(两个表之间,外键一是一棵索引B+树,键和索引表示同一个意思),MyISAM不支持外键;对一个包含外键的InnoDB表转为MyISAM会失败;1.3 索引与数据文件:InnoDB和MyISAM的索引都是使用B+树结构,但是:InnoDB使用的是原创 2021-10-12 23:53:45 · 277 阅读 · 0 评论 -
MySQL C API的定义及使用方法
第一部分:init初始化MySQL连接的相关API:(1) mysql_init :MYSQL* mysql_init(MYSQL *mysql);返回一个MYSQL 句柄,对应这个句柄MySQL会在数据库内部分配一个对象并开辟内存,用于存储关联这个连接的处理信息。后续所有的对这条数据库连接的操作都是通过这个句柄,类似于socket()返回的sockfd。如果MySQL内部内存不足,则返回NULL。(2) mysql_options :int mysql_options(MYSQL* mys原创 2021-09-12 13:05:35 · 775 阅读 · 0 评论 -
MySQL高可用集群方案优劣对比
转载自:https://www.cnblogs.com/wuxu/p/13161438.html集群的好处:(1)高可用性:故障检测及迁移,多节点备份;(2)可伸缩性:新增数据库节点便利,方便扩容;(3)负载均衡:切换服务访问某节点,分摊单个节点的数据库压力。集群需要考虑的风险:(1)网络分裂:集群还可能由于网络故障而拆分为多个部分,每部分内的节点相互连接,但各部分之间的节点失去连接;(2)脑裂:导致数据库节点彼此独立运行的集群故障称为“脑裂”。这种情况可能导致数据库不一致,并且无法修复,例转载 2021-08-25 23:01:25 · 2658 阅读 · 0 评论 -
MySQL查询性能优化:导致查询操作阻塞或变慢的可能原因及分析方法
一般情况下,对于“查询”的性能优化是针对于一些复杂的语句,并且需要返回大量的数据的场景。但有些情况下,“查一行”也会执行的特别慢,本文介绍可能出引发这种现象的几类,并总结出解决方法。1. 第一类:查询长时间不返回:1.1 第1种情况:等MDL锁:mysql> select * from t where id = 1;如果查询结果长时间不返回,一般碰到这种情况,大概率是表t被锁住了。接下来分析原因的时候,一般都是首先执行以下 show processlist 命令,看看当前语句处于什么状态。然原创 2021-08-08 15:02:13 · 6837 阅读 · 0 评论 -
MySQL的主备同步原理及过程
主备同步流程图:原创 2021-06-06 01:17:55 · 3813 阅读 · 2 评论 -
MySQL日志系统:一条SQL“更新语句”是如何执行的(redo log、binlog)
执行下面一条update更新语句:mysql> create table T (ID INT PRIMARY KEY, c INT);mysql> update T set c = c+1 where ID = 2;与查询流程不一样的是,update更新流程还涉及两个重要的日志模块:redo log(重做日志)和 binlog(归档日志)。redo log所使用的技术成为 ‘WAL技术’,Write-Ahead Logging,它的关键点就是:‘先写日志,再写磁盘’。redo lo原创 2021-06-05 01:31:51 · 411 阅读 · 1 评论 -
MySQL事务隔离与其中的锁
一、MVCC是什么,MVCC有什么用:MVCC = Multi-Version Concurrency Control, 多版本并发控制InnoDB存储引擎采用的是行级锁,它对外呈现的效果就是对表中的每个操作行都加锁,但是InnoDB在实现上并非真正的锁住每个操作行(这样会导致系统开销很大),而是在大多数情况下使用MVCC代替行级锁,从而降低系统开销。MVCC的作用:在InnoDB等引擎中代替行级锁以降低系统开销,达到行级锁的效果。MVCC是如何实现的:MVCC是通过 保存数据在某个时间点的快照原创 2020-11-23 01:50:26 · 209 阅读 · 0 评论 -
MySQL事务与并发控制
1. MySQL 事务是什么:一系列SQL语句需要捆绑执行,要么全部执行,要么全部不执行,这一系列捆绑在一起的操作(SQL语句)就是一个事务。事务是MySQL执行的最小单元,它是原子性的操作。例如,A转账给B 100元,这时就要对数据库进行两个操作:(1)A账户的余额 -100:mysql> update money_db set A -100; //伪代码(2)B账户的余额 +100:mysql> update money_db set B +100;显然这两行SQL语原创 2020-11-20 01:26:31 · 435 阅读 · 0 评论 -
MySQL索引的特性及使用小结
索引分类:MySQL的索引分为:单列索引、组合索引。其中单列索引又分为:主键索引、唯一索引、普通索引。参考链接:https://www.cnblogs.com/chenshishuo/p/5030029.html原创 2020-11-18 00:28:26 · 231 阅读 · 0 评论 -
MySQL基础架构:一条SQL“查询语句”是如何执行的
MySQL由连接器查询缓存(8.0版本之前)分析器优化器执行器存储引擎所组成。1. 连接器:连接器负责管理连接的【创建、维持、管理】以及【权限验证】。执行SQL语句之前,客户端需要先与服务器进行连接,即:mysql -u root -p此时客户端会与MySQL服务器之间进行TCP三次握手建立连接(传输层),在TCP连接建立后,再进行MySQL客户端权限验证(应用层),此时可能会出现两种情况:(1)MySQL用户名或者密码错误,此时客户端收到“Access denied f.原创 2020-11-17 22:33:10 · 922 阅读 · 0 评论 -
MySQL基本操作(概念/常用术语/增删改查)
MySQL:数据库(database)的定义:保存有组织的数据的容器(一个文件或者一组文件)。误区:人们经常用数据库这个词来代表他们所使用的的软件,例如MySQL、Redis等,这是不正确的,确切地说,数据库软件应该称为 DBMS(数据库管理系统)。数据库是通过数据库软件来创建和操作的容器(一个文件或者一组文件)。我们并不直接访问数据库,而是通过数据库软件来访问数据库。MySQL是数据库管理软件,而不是数据库本身。什么是SQL:SQL = Structure Queury Language,原创 2020-11-16 22:35:03 · 533 阅读 · 0 评论