随笔分类 - Mysql
摘要:1、添加用户 命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password'; 说明:username:你将创建的用户名host:指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost,如果想让该用户可以从任意远程主机登陆,可以使用通
阅读全文
摘要:先看第一个问题:能不能使用 join? 如果可以使用 Index Nested-Loop Join 算法,也就是说可以用上被驱动表上的索引, 其实是没问题的; 如果使用 Block Nested-Loop Join 算法,扫描行数就会过多。尤其是在大表上的 join 操作,这样可能要扫描被驱动表很多
阅读全文
摘要:表数据既可以存在共享表空间里,也可以是单独的文件。这个行为是由参数 innodb_file_per_table 控制的: 1. 这个参数设置为 OFF 表示的是,表的数据放在系统共享表空间,也就是跟数据字典放 在一起; 2. 这个参数设置为 ON 表示的是,每个 InnoDB 表数据存储在一个以 .
阅读全文
摘要:本文我们来谈谈项目中常用的MySQL优化方法,共19条,具体如下:1、EXPLAIN命令做MySQL优化,我们要善用EXPLAIN查看SQL执行计划。下面来个简单的示例,标注(1、2、3、4、5)我们要重点关注的数据: type列,连接类型。一个好的SQL语句至少要达到range级别。杜绝出现all
阅读全文
摘要:在你开发应用的时候,一定会经常碰到需要根据指定的字段排序来显示结果的需求。假设你要查询城市是“杭州”的所有人名字,并且按照姓名排序返回前 1000 个人的姓名、年龄。 查询语句为: 全字段排序 为避免全表扫描,我们需要在 city 字段加上索引。 通常情况下,这个语句执行流程如下所示 : 初始化 s
阅读全文
摘要:你首先要明确的是,在不同的 MySQL 引擎中,count(*) 有不同的实现方式。 MyISAM 引擎把一个表的总行数存在了磁盘上,因此执行 count(*) 的时候会直接返回这个数,效率很高; 而 InnoDB 引擎就麻烦了,它执行 count(*) 的时候,需要把数据一行一行地从引擎里面读出来
阅读全文
摘要:平时的工作中,不知道你有没有遇到过这样的场景,一条 SQL 语句,正常执行的时候特别快,但是有时也不知道怎么回事,它就会变得特别慢,并且这样的场景很难复现,它不只随机,而且持续时间还很短。 当内存数据页跟磁盘数据页内容不一致的时候,我们称这个内存页为“脏页”。内存数据写入到磁盘后,内存和磁盘上的数据
阅读全文
摘要:说到这个问题之前,首先我们需要先了解一下change buffer 当需要更新一个数据页时,如果数据页在内存中就直接更新,而如果这个数据页还没有在内存中的话,在不影响数据一致性的前提下,InooDB 会将这些更新操作缓存在 change buffer 中,这样就不需要从磁盘中读入这个数据页了。在下次
阅读全文
摘要:数据库锁设计的初衷是处理并发问题。作为多用户共享的资源,当出现并发访问的时候,数据库需要合理地控制资源的访问规则。而锁就是用来实现这些访问规则的重要数据结构。 根据加锁的范围,MySQL 里面的锁大致可以分成全局锁、表级锁和行锁三类。 全局锁 顾名思义,全局锁就是对整个数据库实例加锁。MySQL 提
阅读全文
摘要:索引的出现其实就是为了提高数据查询的效率,就像书的目录一样。 索引模型有三种常见、也比较简单的数据结构分别是哈希表、有序数组和搜索树。 哈希表 哈希表是一种以键 - 值(key-value)存储数据的结构,我们只要输入待查找的值即 key,就可以找到其对应的值即 Value。哈希的思路很简单,把值放
阅读全文
摘要:执行修改语句前要先连接数据库,这是连接器的工作。 接下来,分析器会通过词法和语法解析知道这是一条更新语句。优化器决定要使用 ID 这个索引。然后,执行器负责具体执行,找到这一行,然后更新。 Mysql查询语句的运行流程详细说过这个过程,与查询流程不一样的是,更新流程还涉及两个重要的日志模块,它们正是
阅读全文
摘要:我们先看一下MYsql的基本架构示意图: 大体来说,MySQL 可以分为 Server 层和存储引擎层两部分。 Server 层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖 MySQL 的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层
阅读全文
摘要:1、innodb_buffer_pool_size innodb_buffer_pool_size 参数用来设置Innodb 最主要的Buffer(Innodb_Buffer_Pool)的大小,也就是缓存用户表及索引数据的最主要缓存空间,对Innodb 整体性能影响也最大。 对于一台单独给MySQL
阅读全文
摘要:1.新建用户 登录MYSQL: @>mysql -u root -p @>密码 创建用户: mysql> insert into mysql.user(Host,User,Password) values("localhost","test",password("1234")); 这样就创建了一个名
阅读全文
摘要:性能分析explain MySql Query Optimizer是MySql中专门负责优化select语句的优化器模块,主要功能:通过计算分析系统中收集到的系统信息,为客户端请求的Query提供他认为最优的执行计划(系统认为最优的数据检索方式,但不见得是DBA认为最优的,这部分最耗费时间) MyS
阅读全文
摘要:前言: 最近设计了一套聊天功能,此功能支持人对人聊天、发送图片、查看聊天记录、按时间展示聊天列表、最后一条聊天数据及未读消息数 下面分享一下表结构及实现逻辑: 表结构: 1、聊天主表 2、聊天列表表 3、聊天详情表 聊天逻辑: 1、点击聊天 判断是不是第一次聊天,如果是会在主表生成一条记录返回聊天主
阅读全文
摘要:一、存储引擎 推荐使用Innodb,这也是mysql默认使用的存储引擎,支持事务 二、属性的选择 字符选择: 1、char,存定长,速度快,存在空间浪费的可能,会处理尾部空格,上限255字节。(utf-8, 一个汉字3字节 英文字母1字节) 2、varchar,存变长,速度慢,不存在空间浪费,不处理
阅读全文
摘要:第一范式: 第二范式: 正解: 第三范式: 示例: 正解: BC范式: 示例: 正解:
阅读全文
摘要:1、创建备份文件夹 2、创建脚本文件 添加可执行权限 chmod +x backmysql.sh 3、创建crontab任务 安装: 1. 确认crontab是否安装: 执行 crontab 命令如果报 command not found,就表明没有安装 2. 安装 crontab 执行 yum i
阅读全文
摘要:在学习事务这一概念前,我们需要需要构思一个场景 场景构思 假设该场景发生于一个银行转账背景下,月中,又到了发工资的日子。学校打算给A老师发放一个月的工资。(此处,我们假设转账都是由人工操作的),整个过程本应该如下: 学校财务核对A老师工资单 确认学校账上还有这么多钱 向银行提出转账申请,银行扣除学校
阅读全文