(4)MySQL进阶篇SQL优化(常用SQL的优化)
1.概述
前面我们介绍了MySQL中怎么样通过索引来优化查询。日常开发中,除了使用查询外,我们还会使用一些其他的常用SQL,比如 INSERT、GROUP BY等。对于这些SQL语句,我们该怎么样进行优化呢?本节将针对这些SQL语句介绍一些优化的方法。
2.优化INSERT语句
当进行数据IN...[2021/3/29]
一文让你彻底搞懂 MySQL 的几种锁
文章来源:51CTO博客,作者:青苔初生
一文读懂所有锁,了解他们的优缺点和使用场景。
表级锁与行级锁
表级锁:
table-level locking,锁住整个表。
开销小,加锁快。
不会死锁(一次性加载所需的所有表)。
锁粒度大,发生锁冲突概率大,并发效率低。
适合查询。
行...[2021/3/29]
MySQL中explain语句的基本使用教程
一、概述
在 MySQL 中,我们可以使用慢查询日志或者 show proce list 命令等方式定位到执行耗时较长的 SQL 语句,在这之后我们可以通过 EXPLAIN或者 DESC 命令获取 MySQL 如何执行 SELECT 语句 的信息,包括在 SELECT 语句执行过程中表如何连接和...[2021/3/29]
地理位置geo处理之mysql函数
目前越来越多的业务都会基于LBS,附近的人,外卖位置,附近商家等等,现就讨论离我最近这一业务场景的解决方案。
目前已知解决方案有:
mysql 自定义函数计算
mysql geo索引
mongodb geo索引
postgresql PostGis索引
redis geo
Elastic...[2021/3/24]
(2)MySQL进阶篇SQL优化(show status、explain分析)
1.概述
在应用系统开发过程中,由于初期数据量小,开发人员写SQL语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多SQL语句开始逐渐显露出性能问题,对生产环境的影响也越来越大,此时这些有问题的SQL语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,该章...[2021/3/24]
(3)MySQL进阶篇SQL优化(索引)(3)MySQL进阶篇SQL优化(索引)
1.索引问题
索引是数据库优化中最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数 的SQL性能问题。本章节将对MySQL中的索引的分类、存储、使用方法做详细的介绍。
2.索引的存储分类
MyISAM存储引擎的表数据和索引是自动分开存储的,各自是独立的一个文件;InnoDB存储引擎...[2021/3/24]
MYSQL EXPLAIN字段含义
explain包含id、select_type、table、type、po ible_keys、key、key_len、ref、rows、extra字段 id
id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按select出现的顺序增长的。
&nbs...[2021/3/24]
MySQL在线DDL工具 gh-ost
一.简介
gh-ost基于 golang 语言,是 github 开源的一个 DDL 工具,是 GitHub''s Online Schema Transmogrifier/Transfigurator/Transformer/Thingy 的缩写,意思是 GitHub 的在线表定义转换器。&n...[2021/3/24]
MySQL处理JSON常见函数的使用
官方文档:JSON Functions
Name
Description
JSON_APPEND()
Append data to JSON document
...[2021/3/8]
mysql-canal-rabbitmq 安装部署超详细教程
原文
1.1. 开启 MySQL 的 binlog 日志
1.修改 my.cnf 或 my.ini(windows), 添加配置项:
# binlog 日志存放路径
log-bin=D:\env\mysql-5.7.28-winx64\binlog
# 日志中记录每一行数据被...[2021/3/8]
🍖MySQL锁机制
引入
1.什么是锁
锁是计算机协调多个进程或线程并发访问某一资源的机制,我们称之为锁机制
2.为何要使用锁机制
因为在数据库中,除了传统的计算资源(如CPU、RAM、I/O等)的争用以外,数据也是一种供需要用户共享的资源
当并发事务同时访问一个共享的资源时,有可能导致数据不一致、数...[2021/3/8]
MySQL入门到精通:关于 MySQL管理,你要知道这些...
启动及关闭 MySQL 服务器
首先,我们需要通过以下命令来检查MySQL服务器是否启动:
ps -ef | grep mysqld
如果MySql已经启动,以上命令将输出mysql进程列表, 如果mysql未启动,你可以使用以下命令来启动mysql服务器:
root@host# c...[2021/3/8]
MySQL优化
1.建立索引
(1)合理的索引能够加速数据读取效率,不合理的索引反而会拖慢响应速度;
(2)索引越多,更新数据的速度越慢
(3)尽量在MyIsam作为引擎的时候使用索引
(4)可在条件语句上建立索引,where,order by
2.大量数据查询时存储引擎使用MyISA...[2021/3/8]
open
vim /etc/my.conf
使用 open 函数去读取文件,似乎是所有 Python 工程师的共识。
今天明哥要给大家推荐一个比 open 更好用、更优雅的读取文件方法 -- 使用 fileinput
fileinput 是 Python 的内置模块,但我相信,不少人对它都是陌生的...[2021/3/8]
🍖事务隔离机制🍖事务隔离机制
一.事务隔离机制介绍
事务具有原子性、一致性、隔离性、持久性四大特性
而隔离性顾名思义指的就是事务彼此之间隔离开, 多个事务在同时处理一个数据时彼此之间互相不影响, 如果隔离的不够好就有可能会产生脏读、不可重复度、幻读等读现象
二.隔离性的四个级别
1.等级(隔离程度)由低到高
Read...[2021/3/8]
MySql-Day-01
MySql
能够理解数据库的概念
能够安装MySQL数据库
能够启动,关闭及登录MySQL
能够使用SQL语句操作数据库
能够使用SQL语句操作表结构
能够使用SQL语句进行数据的添加修改和删除的操作
能够使用SQL语句添加约束
一、数据库介绍
1.1、数据库概念
什么是数据库
? 数...[2021/3/8]
MySql-Day-02MySql-Day-02
mysql查询DQL&多表关系
能够使用SQL语句查询数据
能够使用SQL语句进行条件查询
能够使用SQL语句进行排序
能够使用聚合函数
能够使用SQL语句进行分组查询
能够完成数据的备份和恢复
能够使用可视化工具连接数据库,操作数据库
能够说出多表之间的关系及其建表原则
能够理解外键约...[2021/3/8]
MySQL入门到精通:MySQL 删除数据库
使用 mysqladmin 删除数据库
使用普通用户登陆mysql服务器,你可能需要特定的权限来创建或者删除 MySQL 数据库。
所以我们这边使用root用户登录,root用户拥有最高权限,可以使用 mysql mysqladmin 命令来创建数据库。
在删除数据库过程中,务必要十分谨慎,...[2021/3/8]
MySQL入门MySQL入门
MySQL使用入门
数据库概述
数据库是存放数据的仓库。在应用的开发中总是离不开数据的查询、处理、存储,例如图书管理系统就需要操纵和存储大量的数据。没有数据库之前我们使用文件存储数据,但是文件存储有很多弊端,查询效率低,读取麻烦,不易于管理等等,这么多的麻烦我们都可以交给数据库进行管理,数据库...[2021/3/8]
用mysql的执行计划分析DATE_FORMAT函数对索引的影响用mysql的执行计划分析DATE_FORMAT函数对索引的影响
最近公司在代码评审时,在使用DATE_FORMAT函数的问题上有了点不同的观点。 具体DATE_FORMAT对索引会不会产生影响?哪种情况下会产生影响呢? 周末无事,通过mysql的执行计划测试一波 注意:本文中采用的数据库为mysql7,若使用mysql6及其他版本数据库可能测试结果不同
执...[2021/3/8]
Mysql5.7 Linux编译安装教程
内容转载自:https: www.cnblogs.com/haima/p/12276063.html
1.系统约定
安装文件下载目录:/data oftware Mysql目录安装位置:/usr/local/mysql 数据库保存位置:/usr/local/mysql/data...[2021/3/8]
Mysql基础部分总结
Mysql基本语法:
文末有mysql资料
执行顺序:
from -> join -> on -> where -> groupby -> avg max .. -> having -> select ->order by
SQL语言分类:
...[2021/3/8]
mysql 主备 主从 主主模式介绍
单点故障的情况不可避免,而且单副本的存储方案早已无法满足业务的可靠性要求,单机可靠性就就两个9,也就是一年大概有3.65天不可用。因此一般情况下我们至少也会上个双机存储架构。凡事最好有个plan B。
主备
主:主机,备:备机。 主机的意思当然是以它为主了,读写都是主机上,而备机呢就是备用,默...[2021/3/8]
忘记MySQL的root密码了?别怕,教你如何重置密码!
1.修改配置文件 my.cnf,在配置文件 [mysqld] 下添加 skip-grant-tables,重启MySQL服务即可免密码登录
其中 --skip-grant-tables 选项的意思是启动 MySQL 服务的时候跳过权限表认证。 启动后...[2021/3/8]
SQL必知必会 —— 性能优化篇
数据库调优概述
数据库中的存储结构是怎样的
在数据库中,不论读一行,还是读多行,都是将这些行所在的页进行加载。也就是说,数据库管理存储空间的基本单位是页(Page)。
一个页中可以存储多个行记录(Row),同时在数据库中,还存在着区(Extent)、段(Segment)和...[2021/3/8]
数据库事务 ACID属性、数据库并发问题和四种隔离级别数据库事务 ACID属性、数据库并发问题和四种隔离级别
数据库事务 ACID属性、数据库并发问题和四种隔离级别
数据库事务
数据库事务是一组逻辑操作单元,使数据从一种状态变换到另一种状态
一组逻辑操作单元;一个或多个DML操作
事务处理原则
保证所有事务都作为一个工作单元来执行,即使出现故障,都不能改变这种执行方式。
一个事务执行多次操作时...[2021/3/8]
MySQL日志收集之Filebeat和Logstsh的一键安装配置(ELK架构)
关于ELK是什么、做什么用,我们不在此讨论。本文重点在如何实现快速方便地安装logstash和filebeat组件,特别是在近千台DB Server的环境下(为了安全保守,公司DB Server 目前尚未部署saltstack一类的管控软件)。在尽可能标准化的条件下,希望可以实现一键化安装。下面...[2021/3/8]
[MySQL]开启慢查询日志以及未使用索引SQL日志
1. 开启慢查询日志方式:
可以更改数据库配置文件 ,例如在ubuntu下配置文件位置
/etc/mysql/mysql.conf.d/mysqld.cnf
增加这三项
#记录慢查询日志 slow_query_log = ON slow_query_log_file = /var/log...[2021/3/8]
详解记录MySQL中lower_case_table_names的坑
1 起因
项目迁移数据库, 重新启动后, 报错"T_AAA表不存在", 但数据库中可以查看到该表并有数据
2 问题分析
通过重装系统与数据库, 确认系统与数据库纯净, 排除系统和数据库的原因
使用同一方式恢复两天前和一天前的数据备份, 同样不能启动项目, 排除数据内容的原因
使...[2021/3/8]
编程学习 | mysql 编码设置命令编程学习 | mysql 编码设置命令
查看编码:
show variables like ''character%'';或status:
修改:set 变量=置
set character_set_client = utf8 ;
mysql修改root密码
方法一:
(适用于管理员或者有全局权限的用...[2021/3/1]
win10下安装mysql8.0.23 及 “服务没有响应控制功能”问题解决办法
win10下安装mysql
1. 官网下载mysql
网址:https: www.mysql.com/download
download页面往下拉:点击下图红框:
按下图指示操作:
下载之后解压:
解压目录如下图所示:
2. 配置环境变量
...[2021/3/1]
[GO]mysql中支持表情emoji字符的几个修改点[GO]mysql中支持表情emoji字符的几个修改点
使mysql表支持存储表情字符需要注意以下几个字符编码的处理:
数据库编码可以是 utf8mb4
表的编码是 utf8mb4
表中内容字段是 utf8mb4
连接数据库时是 utf8mb4
例如go连接mysql : 这里的dsn有字符指定
sql....[2021/3/1]
数据类型
时间
mysql中时间类型包括:date、dateTime、time、timeStamp、year,对于时间的使用只需要根据需求选择对应的类型即可,只是需要注意以下几点
1、几种时间类型可以精确到秒后最多6位
2、time的范围为''-838:59:59.000000'' to ''838:59...[2021/3/1]
[MySQL]事务的MVCC原理与幻读
首先要了解MVCC,MVCC叫做多版本并发控制,实际上就是保存了数据在某个时间节点的快照。
我们每行数实际上隐藏了两列,创建版本号,过期(删除)版本号,每开始一个新的事务,版本号都会自动递增。
拿user表举例子,假设我们插入两条数据,他们实际上应该长这样 , 创建版本号是递...[2021/3/1]
如何通过Mysql的二进制日志恢复数据库数据
经常有网站管理员因为各种原因和操作,导致网站数据误删,而且又没有做网站备份,结果不知所措,甚至给网站运营和盈利带来负面影响。所以本文我们将和大家一起分享学习下如何通过Mysql的二机制日志(binlog)来恢复数据。
系统环境:
操作系统:CentOS 6.5 X64 (虚拟机)...[2021/3/1]
MySQL 常用命令手册 增删改查大法 - Code-CHAN
一、数据库操作
创建数据库
语法:
CREATE DATABASE database_name;
删除数据库
删除数据库务必谨慎!因为执行删除命令后,所有数据将消失。
语法:
DROP DATABASE database_name;
选择数据库
语法:
USE database_...[2021/3/1]
数据库事务简介.数据库事务简介.
一、事务分类
事务是访问并更新数据库中各种数据项的一个程序执行单元,事务会把数据库从一种一致状态转换为另一种一致状态,这就是事务的目的,也是事务模型区别与文件系统的重要特性之一。
InnoDB 存储引擎中的事务(READ REPEATABLE 隔离级别)完全符合 ACID 的特性。ACID 是...[2021/3/1]
MySQL--初探触发器的使用和理解MySQL--初探触发器的使用和理解
本篇文章分三步介绍触发器:
1.触发器是什么
2.创建触发器
3.使用触发器
1.触发器是什么?
一类特殊的数据库程序,可以监视某种数据的操作(insert/update/delete),并触发相关的操作(insert/update/delete),保护数据的完整性。
...[2021/3/1]
🍖索引原理与慢查询优化
引入
本篇博客偏理论, 将会介绍以下知识:
索引介绍
索引原理
索引的数据结构(二叉树--->平衡二叉树--->B树--->B+树)
聚集索引与辅助索引
MySQL索引管理
创建和删除索引的语法
创建索引后的测试 (查询速度的变化)
如何正确使用索引
回表
覆盖索引
联合索引...[2021/3/1]
🍖数据库事务(Transaction)详解
一.事务
1.什么是事务
事务是由一条或多条SQL语句组成的逻辑执行单元, 可以比喻成一个容器, 里面放的就是一堆SQL语句, 这些语句要么全部执行成功, 要么一个都无法执行成功(原子性)
2.为什么使用事务
对数据进行一系列的操作的时候, 为了防止这些操作中部分操作成功而另一些操作失败, ...[2021/3/1]
编程学习 | MySQL如何导出数据
MySQL中可以使用SELECT...INTO OUTFILE语句来简单的导出数据到文本文件上。
以下实例中我们将数据表 tutorials_tbl 数据导出到 /tmp/tutorials.txt 文件中:
mysql> SELECT * FROM tutori...[2021/3/1]
MySQL中给定父行找到所有子行的解决方案
前言
备注:测试数据库版本为MySQL 8.0
如需要scott用户下建表及录入数据语句,可参考:
scott建表及录入数据sql脚本
一.需求
找到直接及简介(即JONES下属的下属)为JONES工作的所有员工。
JONES下属的员工列表如下所示:
±----...[2021/3/1]
mysql使用SUBSTRING_INDEX截取部分字符串
需求
数据库中有个字段存取的接口返回的JSON数据,现在需要取出JSON数据中部分信息,数据格式如下,要取出orderSn对应的数据
{"data":{"orderSn":"D21031315340867693","payUrl":"https: ...","cOrderSnMap":{...[2021/2/22]
MySQL学习05(MySQL函数)
MySQL函数
常用函数
官方文档 : https: dev.mysql.com/doc/refman/5.7/en/func-op-summary-ref.html
数据函数
SELECT ABS(-8); /*绝对值*/
SELECT CEILING(9.4); /*向...[2021/2/22]
新手编程之旅:MySQL中的关键点!一文带你搞懂它
Mysql的使用非常普遍,跟mysql有关的话题也非常多,如性能优化、高可用性、强一致性、安全、备份、集群、横向扩展、纵向扩展、负载均衡、读写分离等。
要想掌握其中的精髓,可得花费不少功力,虽然目前流行的mysql替代方案有很多,可是从最小成本最容易维护的角度而言,mysql还是首选。...[2021/2/22]
(1)MySQL进阶篇在linux环境下安装
1.概述
对于mysql二进制安装,优点是可以安装到任何路径下,灵活性好,一台服务器可以安装多个mysql。缺点是已经编译过,性能不如源码编译得好,不能灵活定制编译参数。如果用户即不想安装最简单却不够灵活的RPM包,又不想安装复杂费时的源码包,那么已编译好的二进制包将是最好的选择,下面让...[2021/2/22]
从删库到跑路?别怕,这里教你一招:MySQL误删数据救命指南
预防误操作导致文件/数据丢失不成熟的建议:
欲删除文件时,将rm命令改成mv,可在系统层面将rm命令做个alias(或参考Windows / Mac OSX做法,删除文件时先进回收站)。
删除数据库、表时,不要用drop命令,而是rename到一个专用归档库里;...[2021/2/22]
牛年伊始,你的mysql密码安全吗?
前言:
新年伊始,你的数据库是不是该巡检了?一般巡检都会关心密码安全问题,比如密码复杂度设置,是否有定期修改等。特别是进行等保评测时,评测机构会要求具备密码安全策略。其实 MySQL 系统本身可以设置密码复杂度及自动过期策略的,可能比较少用,大多数同学并未详细去了解。本篇文章我们一起来学...[2021/2/22]
MySQL学习06(事务和索引)
事务
概述
什么是事务
事务就是将一组SQL语句放在同一批次内去执行
如果一个SQL语句出错,则该批次内的所有SQL都将被取消执行
MySQL事务处理只支持InnoDB和BDB数据表类型
事务的ACID原则
原子性(Atomic)
整个事务中的所有操作,要么全部完成,要么全部不完成...[2021/2/22]
mysql添加备注信息的实现
前言
这连天有人问我一些mysql的备注信息,不得已还是写一遍博客吧
1、创建表的时候,添加表名备注和字段备注
CREATE TABLE `healerjean_comment` (
`id` bigint(20) NOT NULL AUTO_INCREMENT,
`n...[2021/2/19]