mysql 查看表是否存在_MySQL优化篇二

单表优化

最佳左前缀原则为,保持索引的定义和使用顺序的一致性

将含In的范围查询,放到where条件语句的最后。

索引需要逐步优化

两表优化

小表驱动大表

避免索引失效的一些原则:

复合索引,不要跨列或无序使用(最佳左前缀)

复合索引,尽量使用全索引匹配。就是尽量避免复合索引有三列,而只用到两列。

复合索引不能使用范围查询(!= <>)或is null (is not null),否则自身及右侧索引全部失效。

不要对索引进行操作(计算,函数,类型转换),否则索引失效。

select .. where A.x*3 = ...
-- A.x列存在索引,索引失效

==注意:SQL优化,是一种概率层次的优化,原因是服务层中有SQL优化器,可能会影响我们的优化,出现与我们预期不符的情况。==

尽量不要使用or,会使左右两边索引全部失效。

其他的优化方法

exist 和 in :如果主查询的数据极大,则使用in,如果子查询的数据大,则使用exist。

order by :选择使用单路还是双路;调整buffer容量的大小;避免使用select *...;复合索引不要跨列使用。

SQL慢查询日志:

MySQL提供的一种日志记录,用于记录MySQL中响应超过阈值的SQL语句(默认是10秒),慢查询日志默认是关闭的,建议:开发时打开,最终部署时关闭。

  • 查看慢查询日志是否开启

sql show variables like '%slow_query_log%';

  • 临时开启慢查询日志(在内存中开启),将服务重启后关闭。

set global slow_query_log = 1;

  • 永久开启慢查询日志,修改MySQL配置文件

ini [mysqld] ... + slow_query_log = 1 + slow_query_log_file = 日志存放地址

  • 查看慢查询阈值并修改

```sql -- 查看慢查询阈值时间 show variables like '%long_query_log%'

-- 修改阈值(临时修改),重新登录MySQL后生效(不需要重启服务) set global long_query_time = 5

--修改阈值(永久修改),修改MySQL配置文件,重启服务生效 [mysqld] ... + long_query_time = 5 ```

  • 查询超过阈值的SQL

sql show global status like '%slow_queries%' -- 当然这种方法只能查看超过阈值的SQL条数,具体的SQL语句还是要通过查看上面设置的慢查询日志来确定

  • 使用mysqldumpslow工具来查询慢SQL

​ 通过查看日志的方式虽然可行,但是当我们的SQL语句多了之后,慢SQL语句也随之变多,这样一来查看慢sql日志就成了一件费时费力的事,且日志内容较多,容易造成混乱。使用mysqldumpslow工具可以主动的过滤出我们希望查看的慢SQL语句,比如可以对吗慢SQL语句进行排序,进行正则匹配,只取10条数据等等。

PROFILES分析海量数据

-- 查看profiles是否开启
show variables like '%profiling%';

查看SQL语句执行的Query_id以及持续时间

show profiles;

​ 注意: show profiles可以看到profiling打开之后的SQL语句,会显示ID,持续时间,以及SQL语句,但是我们无法精准的看到各个硬件消费的时间。

查看SQL语句执行的具体硬件消费情况

-- 查看全部信息
show profile all for query  Query_id;-- 查看部分信息
show profile cpu, block io for query  Query_id;

全局查询日志

全局查看日志会记录开启之后的全部SQL语句,因此比较耗费性能。所以我们仅在调优、开发时使用。而且全局查询日志信息较少,所以使用较少。

使用方法

-- 查看是否开启
show variables like '%general_log%';-- 开启全局查询日志
SET GLOBAL general_log = 1;
SET GLOBAL log_output='table';  -- 表明我们将SQL存在表里。mysql.general_log表。SET GLOBAL log_output='file'; 
SET GLOBAL general_log_file='目录/general.log';  -- 表明将SQL存储在文件里
SET GLOBAL general_log = 1; -- 如果无效就需要再开启一下

锁机制

MyISAM只支持表锁,InnoDB支持表锁和行锁

-- 加锁
lock table 表1 read/write, 表1 read/write...;
-- 释放锁
unlock tables;-- 查看表加锁情况
show open tables;

读锁(共享锁)

会话1 对 A 表加 读 锁

  • 会话1:可以读取A表数据,但不能修改。不可以读写其它表数据。
  • 其它会话:可以读取A表数据,如果修改的话必须要等会话1将读锁释放。可以读写其它表数据。

| | 会话1 | 其他会话 | | ------ | ---------------- | --------------------------------------- | | A表 | 可以读,不可以写 | 可以读取,想要更新必须等待会话1释放表锁 | | 其他表 | 不可以读写 | 可以读写 |

写锁(互斥锁)

会话1 对 A 表加 写 锁

  • 会话1:可以对A表进行增删改查,但是不能操作其他表。
  • 其他会话:想要读写A表,必须等会话1释放写锁,可以正常操作其他表。

关闭自动提交

-- 以下三种方式都可以
set autocommit=0;
start transaction;
begin;

主从复制

集群和分布式:用板砖来比喻,一开始一个人负责搬砖和运砖,后来工头嫌他慢,又找了几个人帮他一起搬砖运砖,这叫集群(多个服务器支持一个项目)。后来工头还不满足,就让一群人专门负责搬砖,另一群人专门负责运砖,这叫分布式(一个项目划分为几个部分)。

主从复制大概过程

1aaea97814367432f52ad375ec1e2a03.png

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/567328.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java http请求_如何设置Fiddler来拦截Java代码发送HTTP请求,进行各种问题排查

我们使用Java的RestTemplate或者Apache的HTTPClient编程的时候&#xff0c;经常遇到需要跟踪Java代码发送的HTTP请求明细的情况。和javascript代码在浏览器里发送请求可以通过Chrome开发者工具方便地跟踪一样&#xff0c;对于Java代码发送的网络请求&#xff0c;我们也可以使用…

mysql自增id用完了_MySQL 自增 ID 用完了怎么办?

MySQL 自增 ID 用完了怎么办&#xff1f;在MySQL中有很多类型的自增ID&#xff0c;每个自增ID都设置了初始值&#xff0c;然后按照一定的步长增加&#xff0c;只要定义了字节长度&#xff0c;那么就会有上限&#xff0c;如果达到上限再次添加&#xff0c;则会报主键冲突错误&am…

山洪沟防洪治理工程技术规范_幸福沟水库一期工程完工丨尚志城市供水、防洪、农业灌溉皆升级...

日前&#xff0c;尚志市幸福沟水库一期工程建设完成&#xff0c;已蓄水试运行。幸福沟水库工程是列入黑龙江省“十三五”规划的重点水利项目&#xff0c;是哈市重点推进的两座中型水库之一&#xff0c;也是尚志市一项打基础、利长远、惠民生的重大战略民生工程。幸福沟水库位于…

子类怎么继承父类方法中的变量_JavaOOP_04 封装 继承

一、封装概念&#xff1a;隐藏程序内部的具体实现细节&#xff0c;对外提供接口&#xff0c;从而提高程序的安全性。高内聚&#xff0c;低耦合。使用封装的步骤&#xff1a;1、属性私有化&#xff0c;使用private访问修饰符进行修饰2、对外提供 setter/getter 方法 setter设置值…

mysql 社区版密码如何修改_如何用优雅的方法修改MySQL root密码

搭噶好&#xff0c;我系小编&#xff0c;我好久没发文章了啊&#xff0c;今天发文章的原因是&#xff0c;我竟然忘了我的MySQL root密码。。本来想找RAKsmart客服直接重置啥的&#xff0c;后来想想还是自己搞吧&#xff0c;还能长知识。然后&#xff0c;我发现一个事情&#xf…

中countif函数_Count系列函数-Count、Counta、Countblank、Countif、Countifs

统计函数在我们的日常工作中也会经常使用。常见的有Count、Counta、Countblank、Countif、Countifs五个。Count用于统计数据类型的单元格个数&#xff0c;Counta用于统计非空单元格的个数&#xff0c;Countblank用于统计空单元格的个数&#xff0c;而Countif、Countifs用于条件…

labview实例_手把手以实例教你学LabVIEW编程,条件结构编程方法

LabVIEW又称为G语言&#xff0c;简单易学、形象直观&#xff0c;采用图形化的编程方式&#xff0c;是专为测试、测量和控制应用而设计的系统工程软件。在上篇文章(请参考&#xff1a;顺序结构编程)中已经讲了顺序结构的编程方法&#xff0c;下面通过具体例子演示条件结构的编程…

用递归与分治策略求解网球循环赛日程表_算法设计:分治法(比赛日程安排)...

一、算法思路1、思路分治算法的思想是&#xff1a;对于一个规模位N的问题&#xff0c;若该问题可以容易解决(比如规模N较小)&#xff0c;则直接解决&#xff0c;否则将其分解为M个规模较小的子问题&#xff0c;这些子问题互相独立&#xff0c;并且与原问题形式相同&#xff0c;…

聚类算法 距离矩阵_谱聚类

比起传统的K-means算法&#xff0c;谱聚类对数据分布的适应性更强&#xff0c;计算量也要小很多。1. 谱聚类概述谱聚类是从图论中演化出来&#xff0c;主要思想是吧所有的数据看作空间中的点&#xff0c;这些点之间可以用边连接起来。距离较远的两个点之间的边权重值较低&#…

vlan划分不能上网_VLAN工作原理

什么是VLANVLAN(Virtual LAN)&#xff0c;翻译成中文是“虚拟局域网”。可以看做是在一个物理局域网络上搭建出几个逻辑上分离的几个局域网。举个例子来说&#xff0c;如果一个交换机划分为两个VLAN&#xff0c;则相当于这台交换机逻辑上划分为两个交换机。VLAN的一个简单直观说…

控制for each循环次数_CCF CSP编程题解201312-1:出现次数最多的数

试题编号&#xff1a;201312-1试题名称&#xff1a;出现次数最多的数时间限制&#xff1a;1.0s内存限制&#xff1a;256.0MB问题描述:给定n个正整数&#xff0c;找出它们中出现次数最多的数。如果这样的数有多个&#xff0c;请输出其中最小的一个。输入格式:输入的第一行只有一…

旋流式沉砂池计算_旋流沉砂池设计方法

旋流沉砂池设计接口条件和主要参数设计旋流沉砂池前要确认的接口条件和信息包括&#xff1a;地质、气候等基本设计条件&#xff1b;可用地尺寸及在总图的位置坐标&#xff1b;地坪标高&#xff0c;上下游水位或范围&#xff0c;冻土层高度&#xff0c;管道覆土小深度要求&#…

parallelstream启动的线程数_高并发与多线程网络学习笔记(三)线程组和线程池

线程组线程组的作用是&#xff1a;可以批量管理线程或线程组对象&#xff0c;有效地对线程或线程组对象进行组织。构造函数ThreadGroup(String name)//默认parent为当前线程组 ThreadGroup(ThreadGroup parent, String name)具体方法//评估当前活跃的线程数,包括当前group和子g…

pytorch l2正则化_吴恩达深度学习 编程作业六 正则化(2)

推荐守门员应该将球踢到哪个位置&#xff0c;才能让自己的队员用头击中。1.无正则化模型判别是否有正则化与调用其他计算函数。准确率&#xff1a;0.948/0.915明显过拟合overfiting了。2.L2正则化公式如下&#xff0c;在原有cost函数基础上增加L2项&#xff0c;L2为参数w的均方…

vs中工具箱代表的意思_“日”除了代表太阳,其实还有这种意思,特别是出现在这些词语中的“日”...

对于“日”来说&#xff0c;大家都并不陌生&#xff0c;对于日的成语更是多得数不胜数&#xff0c;今天小编将日字成语进行了一个总结&#xff0c;需要用到的朋友们可以收藏&#xff01;一&#xff1a;以“日”开头的成语&#xff0c;大多数形容的是时间。日积月累、日久天长、…

mysql or走索引吗_加了索引,mysql查询就一定会用吗?

小白白跑去鹅厂面试&#xff0c;面试官提出了一个很实际的问题&#xff1a; mysql增加索引&#xff0c;那些情况会失效呢&#xff1f;谈一下实际工作中遇到的情况。我们的小白白又抛出了白氏秘籍&#xff1a;用不用索引&#xff0c;找DBA小姐姐&#xff01;啊&#xff1f;这是你…

基本农田卫星地图查询_如何基于西安80坐标查询定位

1. 概述水经注软件除了可以轻松下载无水印Google Earth卫星影像、有明确拍摄日期的历史影像、地方高清天地图、百度高德大字体打印地图&#xff0c;且可按1万/5千等国家标准图幅下载&#xff0c;下载含高度的全国矢量建筑、全国乡镇及街区行政区划、地名点、高速铁路网、公交路…

tcp的无延时发送_高并发架构的TCP知识介绍

这是关于高并发架构网络协议基础知识的第二篇&#xff0c;编程路上的基础心法&#xff01;做为一个有追求的程序员&#xff0c;不能只满足增删改查&#xff0c;我们要对系统全方面无死角掌控。掌握了这些基本的网络知识后&#xff0c;相信一方面日常排错中会事半功倍&#xff0…

如何对一个变量数据进行正则判定_生存分析数据中的BuckleyJamesMultipleRegression Model...

一、模型简介目前&#xff0c;生存分析领域&#xff0c;最常用的是Cox比例风险回归模型&#xff0c;该模型具有良好的特性&#xff0c;不仅可以分析各种自变量对生存时间的影响&#xff0c;而且对基准风险分布不作任何要求(半参数模型)。Cox模型使用时要满足一定的条件&#xf…

格兰杰因果关系检验r语言_R语言系列第四期:R语言单样本双样本差异性检验

之前详细介绍了利用R语言进行统计描述&#xff0c;详情点击&#xff1a;R语言系列第三期&#xff1a;①R语言单组汇总及图形展示、R语言系列第三期&#xff1a;②R语言多组汇总及图形展示、R语言系列第三期&#xff1a;③R语言表格及其图形展示从这个部分我们就开始为大家介绍统…