
Mysql
文章平均质量分 81
记录mySQL学习和工作中遇到的问题
weixin_45773632
这个作者很懒,什么都没留下…
展开
-
MySQL面试 (一) 数据类型
当所插入的字符串超出它们的长度时,视情况来处理,如果是严格模式,则会拒绝插入并提示错误信息,如果是宽松模式,则会截取然后插入。如果插入的字符串长度小于定义长度时,则会以不同的方式来处理,如char(10),表示存储的是10个字符,无论你插入的是多少,都是10个,如果少于10个,则用空格填满。长度在大多数场景是没有意义的,它不会限制值的合法范围,只会影响显示字符的个数,而且需要和UNSIGNEDZEROFILL属性配合使用才有意义。CHAR是定长的,根据定义的字符串长度分配足够的空间。.........原创 2022-07-30 21:24:33 · 569 阅读 · 0 评论 -
MySQL面试 (二) 存储引擎
在对缓冲池的脏页进行刷新时,并不直接写磁盘,而是通过memcpy函数将脏页先复制到内存中的该区域,之后通过doublewritebuffer再分两次,每次1MB顺序地写入共享表空间的物理磁盘上,然后马上调用fsync函数,同步磁盘,避免操作系统缓冲写带来的问题。索引通过缓存池的B+树页构造而来,因此建立速度很快,InnoDB存储引擎会监控对表上各个索引页的查询,如果观察到建立哈希索引可以带来速度上的提升,则建立哈希索引,所以叫做自适应哈希索引。2.插入、更新少,读取频繁;3.频繁的统计计算。......原创 2022-07-30 21:58:21 · 399 阅读 · 0 评论 -
MySQL面试 (三) 索引
索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),它们包含着对数据表里所有记录的引用指针。索引是一种数据结构。数据库索引,是数据库管理系统中一个有序的数据结构,以协助快速查询、更新数据库表中数据。索引的实现通常使用B树及其变种B+树。更通俗的说,索引就相当于目录。为了方便查找书中的内容,通过对内容建立索引形成目录。索引是一个文件,它是要占据物理空间的。顾名思义,就是最左优先,在创建多列索引时,要根据业务需求,where子句中使用最频繁的一列放在最左边。=和in可以乱序。.......原创 2022-07-30 23:02:14 · 160 阅读 · 0 评论 -
MySQL面试 (四) 事务
事务是一个不可分割的数据库操作序列,也是数据库并发控制的基本单位,其执行的结果必须使数据库从一种一致性状态变到另一种一致性状态。事务是逻辑上的一组操作,要么都执行,要么都不执行。事务最经典也经常被拿出来说例子就是转账了。假如小明要给小红转账1000元,这个转账会涉及到两个关键操作就是将小明的余额减少1000元,将小红的余额增加1000元。万一在这两个操作之间突然出现错误比如银行系统崩溃,导致小明余额减少而小红的余额没有增加,这样就不对了。事务就是保证这两个关键操作要么都成功,要么都要失败。原子性。.....原创 2022-07-30 23:28:18 · 351 阅读 · 0 评论 -
MySQL面试 (五) 锁
不同于MyISAM总是一次性获得所需的全部锁,InnoDB的锁是逐步获得的,当两个事务都需要获得对方持有的锁,导致双方都在等待,这就产生了死锁。避免死锁通过表级锁来减少死锁产生的概率;多个程序尽量约定以相同的顺序访问表(这也是解决并发理论中哲学家就餐问题的一种思路);同一个事务尽可能做到一次锁定所需要的所有资源。...原创 2022-07-30 23:47:34 · 109 阅读 · 0 评论 -
MySQL知识总结 (六) MySQL调优
我们使用条件对id进行了筛选,在子查询(selectidfromnewsorderbyiddesclimit1000000,1)中我们只查询了id这一个字段比起select*或select多个字段节省了大量的查询开销!我们惊讶的发现mysql在数据量大的情况下分页起点越大查询速度越慢,100万条起的查询速度已经需要7秒钟。这是一个我们无法接受的数值!查询时间0.365秒,提升效率是非常明显的!适合id连续的系统,速度极快!...原创 2022-07-31 23:16:19 · 263 阅读 · 0 评论 -
MySQL知识总结 (七) 主从复制与读写分离
文章目录使用docker搭建mysql主从复制1. 在容器中搭建一个主数据库一个从数据库2. 配置文件编写使用docker搭建mysql主从复制1. 在容器中搭建一个主数据库一个从数据库先启动一个MySQL容器docker run -d -p 3306:3306 --name mysql-mas -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7创建好目录[root@VM-4-17-centos home]# mkdir /home/mysql/[roo原创 2022-05-26 22:57:50 · 237 阅读 · 0 评论 -
MySQL知识总结 (八) InnoDB的MVCC实现机制
全称,即多版本并发控制,主要是为了提高数据库的并发性能。以下文章都是围绕InnoDB引擎来讲,因为myIsam不支持事务。同一行数据同时发生读—写请求时,会上锁阻塞住。但mvcc用更好的方式去处理读—写请求,做到在发生读—写请求冲突时不用加锁。这个读是指的快照读,而不是当前读,当前读是一种加锁操作,是悲观锁。从以上的描述中我们可以看出来,所谓的MVCC指的就是在使用、这两种隔离级别的事务在执行普通的SEELCT操作时访问记录的版本链httpshttps。...原创 2022-07-31 22:14:35 · 352 阅读 · 0 评论 -
MySQL知识总结 (九) 用户与用户权限管理
host指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通配符%password该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器。对用户做了权限变更之后,一定记得重新加载一下权限,将权限信息从内存中写入数据库。username你将创建的用户名。......原创 2022-07-30 20:34:04 · 93 阅读 · 0 评论 -
MySQL知识总结 (十) 一条 SQL 的执行过程详解
我们的系统在和 MySQL 数据库进行通信的时候,总不可能是平白无故的就能接收和发送请求,就算是你没有做什么操作,那总该是有其他的“人”帮我们做了一些事情,基本上使用过 MySQL 数据库的程序员多多少少都会知道 MySQL 驱动这个概念的。就是这个 MySQL 驱动在底层帮我们做了对数据库的连接,只有建立了连接了,才能够有后面的交互。看下图表示:这样的话,在系统和 MySQL 进行交互之前,MySQL 驱动会帮我们建立好连接,然后我们只需要发送 SQL 语句就可以执行 CRUD 了。一次 SQL 请求原创 2022-07-31 22:59:24 · 648 阅读 · 0 评论 -
MySQL知识总结 (十一) MySql 日志,数据备份,数据恢复
通过整库备份+binlog进行恢复.前提是要有定期整库备份且保存了binlog日志.原创 2022-08-01 12:21:37 · 225 阅读 · 0 评论 -
MySQL知识总结 (十二) 数据库相关概念
数据库 : 数据库(DataBase 简称 DB)就是信息的集合或者说数据库是由数据库管理系统管理的数据的集合。数据库管理系统 : 数据库管理系统(Database Management System 简称 DBMS)是一种操纵和管理数据库的大型软件,通常用于建立、使用和维护数据库。数据库管理员 : 数据库管理员(Database Administrator, 简称 DBA)负责全面管理和控制数据库系统。...原创 2022-08-03 10:12:40 · 365 阅读 · 0 评论 -
MySQL 8.0 新特性
文章链接。原创 2022-07-31 21:04:54 · 69 阅读 · 0 评论 -
mysql常用函数
文章目录聚合函数MySQL流程控制函数IF()IFNULL()CASE 语句ROUND()时间YEAR()TIMESTAMPDIFF()窗口函数简介如何使用?rank()聚合函数(1)MAX 查询指定列的最大值(2)MIN 查询指定列的最小值(3)COUNT 统计查询结果的行数(4)SUM 求和,返回指定列的总和(5)AVG 求平均值,返回指定列数据的平均值MySQL流程控制函数IF()语法:IF(expr,v1,v2)其中:表达式 expr 得到不同的结果,当 expr 为真是原创 2022-07-30 20:30:31 · 122 阅读 · 0 评论 -
MySQL 8.0之窗口函数
文章目录简介如何使用?1. rank() 专用窗口函数2. 其他专业窗口函数3. 聚合函数作为窗口函数简介原文链接:https://zhuanlan.zhihu.com/p/92654574此部分官方文档:https://dev.mysql.com/doc/refman/8.0/en/window-function-descriptions.html注意:从版本8.0开始,MySQL支持窗口函数。窗口函数允许您以新的,更简单的方式解决查询问题,并具有更好的性能。窗口函数的基本语法如下:<窗原创 2022-05-25 21:02:59 · 1122 阅读 · 0 评论 -
union 和 union all 的作用和区别
文章目录作用区别例子作用如果我们需要将两个select语句的结果作为一个整体显示出来,我们就需要用到union或者union all关键字。union(或称为联合)的作用是将多个结果合并在一起显示出来。区别union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。例子select employee_id,job_id from employeesunionselect employee_id,job_原创 2022-05-23 09:38:37 · 741 阅读 · 0 评论 -
mysql select 语句详解
文章目录1. select语句完整语法2. select的完整执行顺序1. select语句完整语法SELECT{* | <字段列名>}FROM <表 1>, <表 2>…[where...] --指定结果需满足的条件[GROUP by...] -- 指定结果按照那几个字段来分组[HAVING] --过滤分组的记录必须满足的次要条件[ORDER by...] --指定查询记录按一个过多个条件排序[LIMIT[<offset>,]原创 2022-03-03 16:31:48 · 893 阅读 · 0 评论 -
mysql模糊查询
文章目录1. 使用 like关键字 + 通配符2. mysql内置函数检(locate,position,instr)2.1 LOCATE()函数2.2 POSITION()函数2.3 INSTR()方法3. MySQL基于regexp、rlike的正则匹配查询1. 使用 like关键字 + 通配符like语法格式如下:[NOT] LIKE '字符串'NOT :可选参数,字段中的内容与指定的字符串不匹配时满足条件。字符串:指定用来匹配的字符串。“字符串”可以是一个很完整的字符串,也可以包含原创 2022-03-10 11:27:06 · 918 阅读 · 0 评论