mysql
文章平均质量分 69
K'illCode
记录自己的学习历程,大部分来自转载,如有侵权联系删除.......
展开
-
MySQL 官方压测神器,简单、易用
作者:运维小弟www.toutiao.com/i6843323300764975628/一、MySQL自带的压力测试工具 Mysqlslapmysqlslap是mysql自带的基准测试工具,该工具查询数据,语法简单,灵活容易使用.该工具可以模拟多个客户端同时并发的向服务器发出查询更新,给出了性能测试数据而且提供了多种引擎的性能比较。mysqlslap为mysql性能优化前后提供了直观的验证依据,系统运维和DBA人员应该掌握一些常见的压力测试工具,才能准确的掌握线上数据库支撑的用户流量上限及其原创 2021-01-05 12:51:11 · 218 阅读 · 0 评论 -
MySQL,bin log、redo log
首先,我们先来看看一次查询/更新语句流程图mysql查询/更新流程图本文会将重点放在执行器<->存储引擎之间的交互。mysql不是每次数据更改都立刻写到磁盘,而是会先将修改后的结果暂存在内存中,当一段时间后,再一次性将多个修改写到磁盘上,减少磁盘io成本,同时提高操作速度。MySQL通过WAL(write-ahead logging)技术保证事务在同一个事务中,每当数据库进行修改数据操作时,将修改结果更新到内存后,会在redo log添加一行记录记录“..原创 2020-05-29 11:03:57 · 189 阅读 · 0 评论 -
SQL查找是否存在,别再count了,很耗费时间的
根据某一条件从数据库表中查询 『有』与『没有』,只有两种状态,那为什么在写SQL的时候,还要SELECT count(*) 呢?无论是刚入道的程序员新星,还是精湛沙场多年的程序员老白,都是一如既往的count目前多数人的写法多次REVIEW代码时,发现如现现象:业务代码中,需要根据一个或多个条件,查询是否存在记录,不关心有多少条记录。普遍的SQL及代码写法如下##### SQL写法:SELECT count(*) FROM table WHERE a =...原创 2020-05-29 11:02:10 · 275 阅读 · 0 评论 -
MySQL千万级别大表优化
来源:kks.me/b3fJk当MySQL单表记录数过大时,增删改查性能都会急剧下降,可以参考以下步骤来优化:单表优化除非单表数据未来会一直不断上涨,否则不要一开始就考虑拆分,拆分会带来逻辑、部署、运维的各种复杂度,一般以整型值为主的表在千万级以下,字符串为主的表在五百万以下是没有太大问题的。而事实上很多时候MySQL单表的性能依然有不少优化空间,甚至能正常支撑千万级以上的数据量:...原创 2020-04-23 19:45:59 · 565 阅读 · 0 评论 -
MySQL⼿注之联合查询注⼊详解
MySQL联合查询注入原理union select联合查询,即合并(取交集,结果中没有重复⾏)前后两个查询;前提是前后查询视图必须拥有相同数量的列,列也必需拥有相同的数据类型。Union联合查询注入基本流程1、判断是否存在注入方法一:单引号法注入点'方法二:逻辑法 and 1=1and 1=21' and '1'='11' and '1'=...原创 2020-04-23 19:45:00 · 519 阅读 · 0 评论 -
MySQL 全文索引实现一个简单版搜索引擎
作者:Jia-Xincnblogs.com/YangJiaXin/p/11153579.html前言 只有Innodb和myisam存储引擎能用全文索引(innodb支持全文索引是从mysql5.6开始的) char、varchar、text类型字段能创建全文索引(fulltext index type) 全文索引的基于关键词的,如何区分不同的关键词了,就要用...原创 2020-04-03 19:33:08 · 323 阅读 · 1 评论 -
MySQL大数据量分页查询方法及其优化
方法1: 直接使用数据库提供的SQL语句语句样式: MySQL中,可用如下方法: SELECT * FROM 表名称 LIMIT M,N适应场景: 适用于数据量较少的情况(元组百/千级)原因/缺点: 全表扫描,速度会很慢 且 有的数据库结果集返回不稳定(如某次返回1,2,3,另外的一次返回2,1,3). Limit限制的是从结果集的M位置处取出N条输出,其余抛弃....原创 2020-03-10 07:56:21 · 271 阅读 · 0 评论 -
MySQL数据量大时,delete操作无法命中索引
最近,在脉脉上看到一个楼主提出的问题:MySQL数据量大时,delete操作无法命中索引;并且还附上了相关案例截图。最终,楼主通过开启MySQL分析优化器追踪,定位到是优化器搞的鬼,它觉得花费时间太长。因为我这个是测试数据,究其原因是因为数据倾斜,导致计算出的数据占比较大、花费时间长。大家要记住一点,一条SQL语句走哪条索引是通过其中的优化器和代价分析两个部分来决定的...转载 2019-05-14 17:57:44 · 859 阅读 · 0 评论 -
保证缓存与数据库的双写一致性
# 面试官心理分析你只要用缓存,就可能会涉及到缓存与数据库双存储双写,你只要是双写,就一定会有数据一致性的问题,那么你如何解决一致性问题?# 面试题剖析一般来说,如果允许缓存可以稍微的跟数据库偶尔有不一致的情况,也就是说如果你的系统不是严格要求 “缓存+数据库” 必须保持一致性的话,最好不要做这个方案,即:读请求和写请求串行化,串到一个内存队列里去。串行化可...原创 2019-05-14 17:23:40 · 198 阅读 · 0 评论 -
数据库怎么分库分表,垂直?水平?
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网...原创 2019-05-09 09:52:46 · 154 阅读 · 0 评论 -
MySQL 索引B+树原理,以及建索引的几大原则
MySQL事实上使用不同的存储引擎也是有很大区别的,下面猿友们可以了解一下。一、存储引擎的比较注:上面提到的B树索引并没有指出是B-Tree和B+Tree索引,但是B-树和B+树的定义是有区别的。在MySQL中,主要有四种类型的索引,分别为:B-Tree 索引, Hash 索引, Fulltext 索引和 R-Tree 索引。B-Tree索引...原创 2019-05-04 13:24:20 · 220 阅读 · 0 评论 -
一次非常有意思的SQL优化经历:从30248.271s到0.001s
场景用的数据库是mysql5.6,下面简单的介绍下场景课程表:数据100条学生表:数据70000条学生成绩表SC:数据70w条查询目的:查找语文考100分的考生查询语句:执行时间:30248.271s为什么这么慢?先来查看下查询计划:发现没有用到索引,type全是ALL,那么首先想到的就是建立一个索引,建立索引的字...原创 2019-05-03 15:11:12 · 332 阅读 · 0 评论 -
自增 ID 用完了怎么办 ?
引言在面试中,大家应该经历过如下场景:面试官:"用过mysql吧,你们是用自增主键还是UUID?" 你:"用的是自增主键" 面试官:"为什么是自增主键?" 你:"因为采用自增主键,数据在物理结构上是顺序存储,性能最好,blabla…" 面试官:"那自增主键达到最大值了,用完了怎么办?" 你:"what,没复习啊!!" (然后,你就可以回...原创 2019-04-28 14:07:20 · 261 阅读 · 0 评论 -
Mysql高性能优化规范建议
数据库命令规范 所有数据库对象名称必须使用小写字母并用下划线分割 所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来) 数据库对象的命名要能做到见名识意,并且最后不要超过32个字符 临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀 所有存储相同数据的列名和列类...原创 2019-04-28 14:08:07 · 145 阅读 · 0 评论 -
SQL语句大全,所有的SQL都在这里
一、基础1、说明:创建数据库CREATE DATABASE database-name2、说明:删除数据库drop database dbname3、说明:备份sql server---创建 备份数据的deviceUSE masterEXEC sp_addumpdevice 'disk', 'testBack', 'c:\mssql7backup\MyNwind_1.dat'-...原创 2019-04-28 14:08:53 · 307 阅读 · 0 评论 -
MYSQL 入门全套
MySQL简介1、什么是数据库 ?数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。...原创 2019-04-29 19:40:38 · 125 阅读 · 0 评论 -
不要在MySQL中使用UTF-8
最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrect stringvalue:‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串...原创 2019-04-16 14:55:09 · 172 阅读 · 0 评论 -
面试官:你能给我讲讲用代码实现MySQL的读写分离的思路吗?
# 1、引言读写分离要做的事情就是对于一条SQL该选择哪个数据库去执行,至于谁来做选择数据库这件事儿,无非两个,要么中间件帮我们做,要么程序自己做。因此,一般来讲,读写分离有两种实现方式。第一种是依靠中间件(比如:MyCat),也就是说应用程序连接到中间件,中间件帮我们做SQL分离;第二种是应用程序自己去做分离。这里我们选择程序自己来做,主要是利用Spring提供的路由数据源,以及AOP...原创 2019-04-16 14:54:05 · 231 阅读 · 0 评论 -
图文并茂讲解Mysql事务实现原理
开篇相信大家都用过事务以及了解他的特点,如原子性(Atomicity),一致性(Consistency),隔离型(Isolation)以及持久性(Durability)等。今天想跟大家一起研究下事务内部到底是怎么实现的,在讲解前我想先抛出个问题:事务想要做到什么效果?按我理解,无非是要做到可靠性以及并发处理。可靠性:数据库要保证当insert或update操作时抛异常或者数据库cras...原创 2019-05-24 13:25:51 · 1464 阅读 · 0 评论 -
单机实现亿级规模题库去重
背景最近工作中遇到了一个问题:如何对大规模题库去重?公司经过多年的积累,有着近亿道题目的题库,但是由于题目来源不一导致题库中有很多重复的题目,这些重复的题目在检索时,除了增加搜索引擎的计算量外,并不会提高准确率。此外由于题目过多,搜索引擎往往采取了截断策略,只对一部分题目进行计算,这导致了某些正确的题目反而得不到计算,拍搜准确率甚至不增反降。所以对于一个搜索引擎来说,虽然初期增加题目数量往...原创 2019-05-27 11:38:21 · 349 阅读 · 0 评论 -
MySQL 详细学习笔记
Windows服务-- 启动MySQL netstartmysql-- 创建Windows服务 sc createmysql binPath= mysqld_bin_path(注意:等号与值之间有空格)连接与断开服务器mysql -h 地址 -P 端口 -u 用户名 -p 密码SHOW PROCESSLIST-- 显示哪些线程正在运行SHOW VARIAB...原创 2019-09-08 11:50:21 · 275 阅读 · 0 评论 -
MySQL中IS NULL、IS NOT NULL、!=不能用索引?胡扯!
不知道从什么时候开始,网上流传着这么一个说法:MySQL的WHERE子句中包含 IS NULL、IS NOT NULL、!= 这些条件时便不能使用索引查询,只能使用全表扫描。这种说法愈演愈烈,甚至被很多同学奉为真理。咱啥话也不说,举个例子。假如我们有个表s1,结构如下:CREATE TABLE s1 ( id INT NOT NULL AUTO_INCREMENT, ...原创 2019-07-22 13:28:36 · 2186 阅读 · 2 评论 -
实战分析:事务的隔离级别和传播属性
什么是事务?要么全部都要执行,要么就都不执行。事务所具有的四种特性原子性,一致性,隔离性,持久性原子性个人理解,就是事务执行不可分割,要么全部完成,要么全部拉倒不干。一致性关于一致性这个概念我们来举个例子说明吧,假设张三给李四转了100元,那么需要先从张三那边扣除100,然后李四那边增加100,这个转账的过程对于其他事务而言是无法看到的,这种状态始终都在保持一致,这...原创 2019-07-18 02:23:28 · 154 阅读 · 0 评论 -
MySQL索引的理解
看了很多关于索引的博客,讲的大同小异。但是始终没有让我明白关于索引的一些概念,如B-Tree索引,Hash索引,唯一索引....或许有很多人和我一样,没搞清楚概念就开始研究B-Tree,B+Tree等结构,导致在面试的时候答非所问!一、索引是什么?索引是帮助MySQL高效获取数据的数据结构。二、索引能干什么?索引非常关键,尤其是当表中的数据量越来越大时,索引对于性能的影响愈发...原创 2019-07-16 11:09:34 · 162 阅读 · 0 评论 -
MySQL order by limit 分页数据重复问题
问题描述在MySQL中我们通常会采用limit来进行翻页查询,比如limit(0,10)表示列出第一页的10条数据,limit(10,10)表示列出第二页。但是,当limit遇到order by的时候,可能会出现翻到第二页的时候,竟然又出现了第一页的记录。具体如下:SELECT`post_title`,`post_date`FROMpostWHERE`pos...转载 2019-07-07 11:00:19 · 560 阅读 · 0 评论 -
大厂在用的分库分表方案
一、数据库瓶颈不管是IO瓶颈,还是CPU瓶颈,最终都会导致数据库的活跃连接数增加,进而逼近甚至达到数据库可承载活跃连接数的阈值。在业务Service来看就是,可用数据库连接少甚至无连接可用。接下来就可以想象了吧(并发量、吞吐量、崩溃)。1、IO瓶颈第一种:磁盘读IO瓶颈,热点数据太多,数据库缓存放不下,每次查询时会产生大量的IO,降低查询速度 -> 分库和垂直分表。第二种:网...转载 2019-07-07 10:24:12 · 221 阅读 · 0 评论 -
MySQL 查询速度慢与性能差
作者:唐立勇https://segmentfault.com/a/1190000013672421什么影响了数据库查询速度1.1 影响数据库查询速度的四个因素1.2 风险分析QPS: QueriesPerSecond意思是“每秒查询率”,是一台服务器每秒能够相应的查询次数,是对一个特定的查询服务器在规定时间内所处理流量多少的衡量标准。TPS:是 Transacti...转载 2019-06-18 16:15:22 · 310 阅读 · 0 评论 -
MySQL 到底是怎么解决幻读的?
一、什么是幻读在一次事务里面,多次查询之后,结果集的个数不一致的情况叫做幻读。而多出来或者少的哪一行被叫做幻行。二、为什么要解决幻读在高并发数据库系统中,需要保证事务与事务之间的隔离性,还有事务本身的一致性。三、MySQL 是如何解决幻读的如果你看到了这篇文章,那么我会默认你了解了脏读 、不可重复读与可重复读。1. 多版本并发控制(MVC...原创 2019-06-02 13:04:29 · 260 阅读 · 0 评论 -
针对MySQL死锁问题的分析思路
线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。为了更系统的分析问题,本文将从死锁检测、索引隔离级别与锁的关系、死锁成因、问题定位这五个方面来展开讨论。# 死锁是...转载 2019-06-02 12:59:55 · 226 阅读 · 0 评论 -
MySQL语句执行加速
一打开科技类论坛,最常看到的文章主题就是MySQL性能优化了,为什么要优化呢?因为: 数据库出现瓶颈,系统的吞吐量出现访问速度慢 随着应用程序的运行,数据库的中的数据会越来越多,处理时间变长 数据读写速度缓慢 就是咱们说的“性能问题”,程序员一遇到它总是焦头烂额!今天我对MySQL优化总结了一些心得,希望在大家之后的工作中能有所有帮助!...原创 2019-06-07 13:29:36 · 430 阅读 · 0 评论 -
面试官:给我说说你平时是如何优化MySQL的?
# 1、EXPLAIN做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据。 type列,连接类型。一个好的sql语句至少要达到range级别。杜绝出现all级别 key列,使用到的索引名。如果没有选择索引,值是NULL。可以采取强制索引方式 key_len列,索引长度...转载 2019-03-31 15:53:42 · 2006 阅读 · 0 评论 -
MySQL之Explain详解
一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。设计MySQL的大叔贴心的为我们提供了EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,本章的内容就是为了帮助大家看懂EXPLAIN语句的各个输出项都是干嘛使的,从而可以有针对性的提...原创 2019-03-31 15:44:27 · 318 阅读 · 0 评论 -
select count(*)底层究竟做了什么?
SELECT COUNT( * ) FROM t是个再常见不过的 SQL 需求了。在 MySQL 的使用规范中,我们一般使用事务引擎 InnoDB 作为(一般业务)表的存储引擎,在此前提下,COUNT( * )操作的时间复杂度为O(N),其中 N 为表的行数。而MyISAM表中可以快速取到表的行数。这些实践经验的背后是怎样的机制,以及为什么需要/可以是这样,就是此文想要探讨的。先来看...原创 2019-03-31 15:13:15 · 2451 阅读 · 0 评论 -
Mysql十大经典错误案例
今天就给大家列举 MySQL 数据库中,最经典的十大错误案例,并附有处理问题的解决思路和方法,希望能给刚入行,或数据库爱好者一些帮助。今后再遇到任何报错,我们都可以很淡定地去处理。学习任何一门技术的同时,其实就是自我修炼的过程。沉下心,尝试去拥抱数据的世界!Top 1:Too many connections(连接数过多,导致连接不上数据库,业务无法正常进行)问题还原 m...转载 2018-11-27 09:13:12 · 496 阅读 · 0 评论 -
深入理解MySql的Explain
本文系投稿,作者:UncleMoveBrick个人主页:https://blog.csdn.net/UncleMoveBrickexplain关键字可以模拟优化器执行SQL语句,从而知道MySQL是 如何处理你的SQL语句的。分析你的查询语句或是结构的性能瓶颈。在select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询时,会返回执行计划的信息,而...转载 2018-11-30 09:12:44 · 1033 阅读 · 0 评论 -
MySQL 常用30种SQL查询语句优化方法
1、应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索引而进行全表扫描。2、对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。3、应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描。如:select id from t where num is ...原创 2018-08-16 18:39:24 · 142 阅读 · 0 评论 -
MySQL 数据备份与还原
作者:逆心链接:https://www.cnblogs.com/kissdodog 一、数据备份 1、使用mysqldump命令备份mysqldump命令将数据库中的数据备份成一个文本文件。表的结构和表中的数据将存储在生成的文本文件中。 mysqldump命令的工作原理很简单。它先查出需要备份的表的结构,再在文本文件中生成一个CREATE语句。然后,将表中的所有...转载 2018-08-16 16:29:54 · 254 阅读 · 0 评论 -
Mysql-索引结构直观图解
Mysql-索引结构直观图解。上一篇刚刚通俗化的说明了B-TREE的几个结果与存储方式,其实跟索引感觉上还是没有关联起来, 那么本篇,就通过实际的一个数据行的例子,说明一下一.模拟创建原始数据 下图中,左边是自己方便说明,模拟的数据。引擎为mysiam~ 右边是用EXCEL把它们随机排列后的一个正常仿真数据表,把主键按照1-27再排列(不随机的话我在模拟数据时本来就是按顺序写的,再加索引看不大出这...转载 2018-06-10 08:32:24 · 2541 阅读 · 0 评论 -
一文说尽 MySQL 优化原理
说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL...转载 2018-07-03 19:53:13 · 196 阅读 · 0 评论 -
Mysql-索引结构直观图解
Mysql-索引结构直观图解。上一篇刚刚通俗化的说明了B-TREE的几个结果与存储方式,其实跟索引感觉上还是没有关联起来, 那么本篇,就通过实际的一个数据行的例子,说明一下一.模拟创建原始数据 下图中,左边是自己方便说明,模拟的数据。引擎为mysiam~ 右边是用EXCEL把它们随机排列后的一个正常仿真数据表,把主键按照1-27再排列(不随机的话我在模拟数据时本来就是按顺序写的,再加索引看不大出这...转载 2018-07-03 19:53:23 · 213 阅读 · 0 评论