MySQL进阶
文章平均质量分 90
这里主要分享一下MySQL的一些高级用法,主要涉及内容:索引、定位SQL性能问题、SQL优化
王老桔
这个作者很懒,什么都没留下…
展开
-
MySQL进阶:7.SQL优化
以下内容均以InnoDB类型的表为例1.海量数据导入优化# 导入指定文件的数据到指定表# 文件中的数据格式:"1,wy,123123\n2,xy,123123\n3,zy,123123"mysql> load data local infile '/xx/xx/xx' into table 'xxx' fields terminated by ',' lines terminated by '\n';优化方法原因建议按照主键顺序导入因为存在主键,所以必定要维护至少一个原创 2020-07-08 20:51:45 · 299 阅读 · 0 评论 -
MySQL进阶:6.定位SQL性能问题
1.SQL性能问题在应用开发过程中,初期数据量往往比较小,SQL语句的性能体现并不明显。举个例子:假设数据量为100时,查询性能是0.01s,数据量增长到1000时,查询性能是0.05s。0.01和0.05这种差值从直观感受上来说体现不出来太大变化,还是会觉得挺快的。随着数据量的增加,SQL语句的性能问题就会逐渐显露出来,比如当数据量为10w时,查询性能为5s,这就能明显感觉到性能非常低。如果开发过程中遇到这样的问题,即SQL性能问题,就需要我们进行SQL优化。2.SQL优化步骤定位SQL性能瓶颈位原创 2020-07-07 19:53:34 · 761 阅读 · 0 评论 -
MySQL进阶:5.存储引擎
1.MySQL自上而下的四层结构连接层:以连接池方式管理客户端与MySQL服务器的连接服务层:包括但不限于SQL优化服务、数据缓存服务等存储引擎层:包括但不限于InnoDB、MyISAM等存储层:数据落地(写入磁盘),与文件系统交互2.存储引擎所谓引擎,以汽车引擎为例,引擎就是为汽车提供动力服务的核心组件。再比如,车载音响可以为汽车提供音乐服务,但它并不是必须的、关键的服务,所以它对于汽车而言不能是引擎。再套入MySQL来说,存储引擎是MySQL最核心的服务,这么理解就行了。2.1本质存原创 2020-07-07 19:52:59 · 411 阅读 · 0 评论 -
MySQL进阶:4.为什么不推荐使用存储过程和触发器
以下内容摘自:为什么大家都不推荐使用MySQL触发器而用存储过程?,侵权立删。存储过程和触发器二者是有很大的联系的,我的一般理解就是触发器是一个隐藏的存储过程,因为它不需要参数,不需要显示调用,往往在你不知情的情况下已经做了很多操作。从这个角度来说,由于是隐藏的,无形中增加了系统的复杂性,非DBA人员理解起来数据库就会有困难,因为它不执行根本感觉不到它的存在。再有,涉及到复杂的逻辑的时候,触发器的嵌套是避免不了的,如果再涉及几个存储过程,再加上事务等等,很容易出现死锁现象,再调试的时候也会经常性的.原创 2020-07-07 19:52:27 · 4818 阅读 · 0 评论 -
MySQL进阶:3.视图
1.视图概述视图(View)是一种虚拟概念,它并不在数据库中真实存在。它是一条SELECT语句执行后返回的结果集。视图存在的意义:简单:使用视图的用户完全不需要关心对应的表的个数和结构,因为它就是一个已经过滤好的复合条件的结果集;数据独立:一旦视图创建成功,源表(们)就算增加了列项,也对视图没有任何影响;如果修改了列名,视图只要也跟着修改一下即可。2.操作视图语法2.1创建// 不一定要用select *,可以根据实际情况select指定的一个或多个列项mysql> create原创 2020-07-07 19:51:26 · 285 阅读 · 0 评论 -
MySQL进阶:2.索引
本文导读本文主要对索引进行详解1.索引概述索引的本质:一种有序的数据结构,一般常用的是多路平衡搜索树,即BTREE索引的作用:帮助MySQL高效获取数据条件查询数据方式没有索引顺序遍历数据表查询使用索引根据数据结构(索引)的查询顺序查询【☆☆☆必看】图解:什么是索引2.索引的优缺点优点缺点类似书本的目录索引,提高数据检索效率,降低数据库的IO成本索引本质是数据结构,也是一张表,该表中保存了主键与索引字段,并指向实体类的记录,所以索原创 2020-06-30 19:05:49 · 380 阅读 · 3 评论 -
MySQL进阶:1.MySQL基础环境搭建
# 1.下载适合Centos的MySQL5.7wget https://cdn.mysql.com//Downloads/MySQL-5.7/mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz# 2.解压缩tar -zxvf mysql-5.7.30-linux-glibc2.12-x86_64.tar.gz# 3.重命名一下文件夹,方便后面操作mv mysql-5.7.30-linux-glibc2.12-x86_64 mysql# 4.建议将mysq原创 2020-06-30 19:04:24 · 343 阅读 · 0 评论 -
图解B树构建过程
1.B树结构同时满足以下特性每个节点最多包含n个孩子,即n叉树;除了根节点和叶子节点外,每个节点至少有ceil(n/2)个孩子(ceil是向上取整);若根节点不是叶子节点,则至少有两个孩子;所有叶子节点在同一层;☆☆☆每个非叶子节点由m个key和m+1个指针组成,其中(ceil(n/2)-1)<=m<=n-1;【B树的非叶子节点示意图】key是存储的值,保存的是数据表某一列的内容p是指针,指向当前节点的孩子一个非叶子节点中包括m个key和m+1个指针【伪代码示例】原创 2020-06-24 20:12:27 · 7749 阅读 · 7 评论 -
图解:什么是索引?
1.磁盘【图解】以一个拥有3个磁道和4个扇区的磁盘为例2.数据表与磁盘【图解】以一个简单的用户表user_table为例,总共存储100行数据每一个Block可以存储4行数据,那么该表需要占用25块磁盘;那么如果在该表中查询数据,最坏情况下据需要查询25块磁盘才能查到;需要注意的是,磁盘中的数据是无法直接处理的,需要读取到内存中处理,处理完成后再返回磁盘,即一次IO,那么在该表中查询,最坏的情况就是需要25次IO;3.何为索引?【图解】数据表index_table中只存储两列数原创 2020-06-30 19:01:41 · 1454 阅读 · 0 评论 -
如何设置并查看"MySQL操作记录"的日志?
# 1.自定义创建存放log文件的目录$ mkdir /usr/local/mysql$ mkdir /usr/local/mysql/log# 2.将该目录的用户改成mysql# 否则mysql没有权限在该文件中写日志,也就无法生成log文件$ chown -R mysql:mysql /usr/local/mysql# -R 是将指定目录以及其所有子目录的用户都改成mysql...原创 2019-09-27 17:26:45 · 306 阅读 · 0 评论