
mysql
文章平均质量分 71
深夜程序猿
everything in front of you is the best arrangement
展开
-
mysql经典优化
说起MySQL的查询优化,相信大家收藏了一堆奇技淫巧:不能使用SELECT *、不使用NULL字段、合理创建索引、为字段选择合适的数据类型..... 你是否真的理解这些优化技巧?是否理解其背后的工作原理?在实际场景下性能真有提升吗?我想未必。因而理解这些优化建议背后的原理就尤为重要,希望本文能让你重新审视这些优化建议,并在实际业务场景下合理的运用。MySQL逻辑架构如果能在头脑中构建一幅MySQL各组件之间如何协同工作的架构图,有助于深入理解MySQL服务器。下图展示了MySQL的逻辑架构图转载 2022-07-28 18:11:00 · 111 阅读 · 0 评论 -
MySQL慢查询日志
一查看日志是否开启二开启和关闭的sql三查看log文件所在位置四修改log文件所在位置五日志输出类型table或file六修改日志输出类型。原创 2022-07-28 17:10:12 · 2373 阅读 · 0 评论 -
MySQL中INSERT INTO SELECT的使用
1. 语法介绍 有三张表a、b、c,现在需要从表b和表c中分别查几个字段的值插入到表a中对应的字段。对于这种情况,可以使用如下的语句来实现:INSERTINTOdb1_name (field1,field2)SELECTfield1,field2 FROM db2_name 上面的语句比较适合两个表的数据互插,如果多个表就不适应了。对于多个表,可以先将需要...转载 2019-11-21 23:11:16 · 847 阅读 · 0 评论 -
mysql 判断null 和 空字符串
mysql 判断null 和 空字符串1.在mysql中null 不能使用任何运算符与其他字段或者变量(函数、存储过程)进行运算。若使用运算数据就可能会有问题。2.对null 的判断: 创建一个user表:id 主健 name 可以为空 select * from user; insert into user values('33',null); ##创建一条nam...转载 2019-11-21 23:07:04 · 9355 阅读 · 0 评论 -
MySQL新建用户,授权,删除用户,修改密码
首先要声明一下:一般情况下,修改MySQL密码,授权,是需要有mysql里的root权限的。注:本操作是在WIN命令提示符下,phpMyAdmin同样适用。用户:phplamp用户数据库:phplampDB1.新建用户。//登录MYSQL@>mysql-uroot-p@>密码//创建用户mysql>insertintomysql.user(Host,Use...转载 2019-11-21 23:05:20 · 142 阅读 · 0 评论 -
SQL进行排序、分组、统计的10个新技巧
1.使用排序使数据有序通常,你的所有数据真正需要的仅仅是按某种顺序排列。SQL的ORDER BY语句可以以字母或数字顺序组织数据。因此,相似的值按组排序在一起。然而,这个分组时排序的结果,并不是真的分组。ORDER BY显示每条记录而分组可能代表很多记录。2.进行分组除去重复值排序和分组之间的最大区别是:排序的数据显示所有记录(在限定标准范围之内),而分组数据不是显示所有记录。GROU...转载 2019-11-07 15:40:53 · 901 阅读 · 0 评论 -
sql 经典查询问题
查询没有订单的用户1.SELECT U.ID AS UserID FROM Users ULEFT JOIN Order O ON O.UserID = U.IDWHERE O.ID IS NULL2.select userid from user where userid not in (select distinct userid from order)查询总订单价...原创 2021-08-03 10:46:42 · 1023 阅读 · 0 评论 -
mysql sql中的一些问题,Null与空字符
mysql中的空值,NULL,空字符 Mysql数据库是一个基于结构化数据的开源数据库。SQL语句是MySQL数据库中核心语言。不过在MySQL数据库中执行SQL语句,需要小心两个陷阱。 陷阱一:空值不一定为空 空值是一个比较特殊的字段。在MySQL数据库中,在不同的情形下,空值往往代表不同的含义。这是MySQL数据库的一种特性。如在普通的字段中(字符型的数据),空值就是表示空值...转载 2019-11-07 15:24:33 · 396 阅读 · 0 评论 -
MySQL用户管理
MySQL授权系统主要通过五个表(user、db、host、tables_priv和columns_priv)来实现,其中用于访问数据库的各种用户信息都保存在mysql库的user表中。账户权限信息被存储在mysql数据库的user、db、host、tables_priv、columns_priv和procs_priv表中。 user表——该表决定是否允许用户连接到服务器。如果...转载 2019-11-07 15:21:18 · 205 阅读 · 0 评论 -
cpu load过高问题排查
load average的概念top命令中load average显示的是最近1分钟、5分钟和15分钟的系统平均负载。系统平均负载被定义为在特定时间间隔内运行队列中(在CPU上运行或者等待运行多少进程)的平均进程数。如果一个进程满足以下条件则其就会位于运行队列中:它没有在等待I/O操作的结果 它没有主动进入等待状态(也就是没有调用’wait’) 没有被停止(例如:等待终止)在Li...转载 2019-11-07 14:45:52 · 427 阅读 · 0 评论 -
MySQL 通讯协议
Client/Server 通讯协议用于客户端链接、代理、主备复制等,支持 SSL、压缩,在链接阶段进行认证,在执行命令时可以支持 Prepared Statements 以及 Stored Procedures 。当打算编写数据库代理、中间件、对 MySQL 数据包进行审核时,都需要了解底层的通信协议。在本文中,主要介绍 MySQL 通讯协议相关的内容。简介服务器启动后,会使用 TC...转载 2019-11-05 16:21:45 · 321 阅读 · 0 评论 -
MySQL数据库设置主从同步
MYSQL主从同步是目前使用比较广泛的数据库架构,技术比较成熟,配置也不复杂,特别是对于负载比较大的网站,主从同步能够有效缓解数据库读写的压力。MySQL主从同步的机制MYSQL主从同步是在MySQL主从复制(Master-Slave Replication)基础上实现的,通过设置在Master MySQL上的binlog(使其处于打开状态),Slave MySQL上通过一个I/O线程从M...转载 2019-11-05 16:05:40 · 135 阅读 · 0 评论 -
MySQL主从同步那点事儿
一、前言关于mysql主从同步,相信大家都不陌生,随着系统应用访问量逐渐增大,单台数据库读写访问压力也随之增大,当读写访问达到一定瓶颈时,将数据库的读写效率骤然下降,甚至不可用;为了解决此类问题,通常会采用mysql集群,当主库宕机后,集群会自动将一个从库升级为主库,继续对外提供服务;那么主库和从库之间的数据是如何同步的呢?本文针对MySQL 5.7版本进行下面的分析,下面随笔者一起探究一下m...转载 2019-11-05 16:07:41 · 106 阅读 · 0 评论 -
mysql主从同步原理,配置,同步延迟处理
1、原理Mysql的 Replication 是一个异步的复制过程,从一个 Mysql instace(我们称之为 Master)复制到另一个 Mysql instance(我们称之 Slave)。在 Master 与 Slave 之间的实现整个复制过程主要由三个线程来完成,其中两个线程(Sql线程和IO线程)在 Slave 端,另外一个线程(IO线程)在 Master 端。 要实现 MyS...转载 2019-11-05 16:07:52 · 333 阅读 · 0 评论 -
数据库三大范式
一、第一范式1NF是对属性的原子性,要求属性具有原子性,不可再分解;表:字段1、 字段2(字段2.1、字段2.2)、字段3 ......如学生(学号,姓名,性别,出生年月日),如果认为最后一列还可以再分成(出生年,出生月,出生日),它就不是一范式了,否则就是;二、第二范式2NF是对记录的惟一性,要求记录有惟一标识,即实体的惟一性,即不存在部分依赖;表:学号、课程号、姓名、学...转载 2019-11-05 16:08:00 · 292 阅读 · 0 评论 -
支持多种登录方式的数据表设计
一个带有用户系统的应用最基本登录方式是站内账号登录,但这种方式往往不能满足我们的需求。现在的应用基本都有站内账号、email、手机和一堆第三方登录,那么如果需要支持这么多种登录方式,或者还有银行卡登录、身份证登录等等更多的登录方式,我们的数据表应该怎么设计才更合理呢?需求分析实现多种登录方式,并且除了站内账号登录方式以外的登录方式,都能够进行绑定和解绑或者更换绑定。如果按照传统的数据表...转载 2019-11-05 16:08:09 · 3032 阅读 · 0 评论 -
10亿级订单系统分库分表设计思路!
一、背景随着公司业务增长,如果每天1000多万笔订单的话,3个月将有约10亿的订单量,之前数据库采用单库单表的形式已经不满足于业务需求,数据库改造迫在眉睫。二、订单数据如何划分我们可以将订单数据划分成两大类型:分别是热数据和冷数据。 热数据:3个月内的订单数据,查询实时性较高; 冷数据A:3个月 ~ 12个月前的订单数据,查询频率不高; 冷数据B:1年前的订单...转载 2019-11-05 16:08:16 · 729 阅读 · 0 评论 -
唯品会订单分库分表的实践总结以及关键步骤
随着唯品会业务的快速发展,订单量的不断增长,原有的订单存储架构已经不能满足公司的发展了,特别是在大促高峰期,原订单库已经成为抢购瓶颈,已经严重制约公司的发展。唯品会旧订单库包含几十张订单相关表,旧订单库是典型的一主多从架构;主库容量已接近服务器物理空间上限,同时也已经达到 MySQL 的处理上限,很快将无法再处理新增订单。旧订单库面临的问题有:1、超大容量问题订单相关表都已经是超大...转载 2019-11-05 16:08:26 · 288 阅读 · 0 评论 -
mysql自定义函数详解
1. 函数简介mysql 5.0开始支持函数,函数是存在数据库中的一段sql集合,调用函数可以减少很多工作量,减少数据在数据库和应用服务器上的传输,对于提高数据处理的效率。参数类型为in类型,函数必须有返回值,与oracle等其他库函数参数类型有区别,如果做数据迁移,或许需要将函数改变成存储过程,因为mysql的存储过程参数包括in,out,inout三种模式。创建函数语法:...转载 2019-11-05 16:08:33 · 2749 阅读 · 0 评论 -
Mysql视图
视图View使用总结:视图可以看作为“虚拟表”,因为它返回的结果集格式与实体数据表返回的数据集格式类似,并且引用视图的方式与引用数据表的方式相同。每次查询使用视图时,DBMS会动态生成视图结果集所需要的逻辑合并到从基表数据生成的结果集逻辑中。l什么是视图?l视图的特点?l视图的类型?l视图的使用?一、什么是视图视图是一个从一张或几张数据表或视图中...转载 2019-11-05 16:08:40 · 186 阅读 · 0 评论 -
mysql死锁问题分析
线上某服务时不时报出如下异常(大约一天二十多次):“Deadlock found when trying to get lock;”。 Oh, My God! 是死锁问题。尽管报错不多,对性能目前看来也无太大影响,但还是需要解决,保不齐哪天成为性能瓶颈。 为了更系统的分析问题,本文将从死锁检测、索引隔离级别与锁的关系、死锁成因、问题定位这五个方面来展开讨论。图1...转载 2019-11-04 16:51:39 · 207 阅读 · 0 评论 -
记录一次Mysql死锁排查过程
背景以前接触到的数据库死锁,都是批量更新时加锁顺序不一致而导致的死锁,但是上周却遇到了一个很难理解的死锁。借着这个机会又重新学习了一下mysql的死锁知识以及常见的死锁场景。在多方调研以及和同事们的讨论下终于发现了这个死锁问题的成因,收获颇多。虽然是后端程序员,我们不需要像DBA一样深入地去分析与锁相关的源码,但是如果我们能够掌握基本的死锁排查方法,对我们的日常开发还是大有裨益的。PS:本...转载 2019-11-04 16:50:27 · 230 阅读 · 0 评论 -
产生死锁的原因及必要条件
什么是死锁?所谓死锁,是指多个进程在运行过程中因争夺资源而造成的一种僵局,当进程处于这种僵持状态时,若无外力作用,它们都将无法再向前推进。 因此我们举个例子来描述,如果此时有一个线程A,按照先锁a再获得锁b的的顺序获得锁,而在此同时又有另外一个线程B,按照先锁b再锁a的顺序获得锁。如下图所示:产生死锁的原因?可归结为如下两点:a. 竞争资源系统中的资源可以分为两类:可剥夺...转载 2019-11-04 16:48:41 · 1113 阅读 · 0 评论 -
Mysql并发时经典常见的死锁原因及解决方法
1.mysql都有什么锁MySQL有三种锁的级别:页级、表级、行级。表级锁:开销小,加锁快;不会出现死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。行级锁:开销大,加锁慢;会出现死锁;锁定粒度最小,发生锁冲突的概率最低,并发度也最高。页面锁:开销和加锁时间界于表锁和行锁之间;会出现死锁;锁定粒度界于表锁和行锁之间,并发度一般算法:next KeyLocks...转载 2019-11-04 16:38:03 · 122 阅读 · 0 评论 -
MySQL中的锁(表锁、行锁)
锁是计算机协调多个进程或纯线程并发访问某一资源的机制。在数据库中,除传统的计算资源(CPU、RAM、I/O)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所在有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。概述 相对其他数据库而言,MySQL的锁机制...转载 2019-11-04 16:22:02 · 105 阅读 · 0 评论 -
数据库事务隔离级别、锁机制
一、数据库事务隔离级别SQL标准定义了4类隔离级别,包括了一些具体规则,用来限定事务内外的哪些改变是可见的,哪些是不可见的。低级别的隔离级一般支持更高的并发处理,并拥有更低的系统开销。1、Read Uncommitted(读取未提交内容)在该隔离级别中,所有事务可以看到其他未提交事务的执行结果。本级别隔离很少用于实际应用,比其他隔离级别性能也好不了多少。读取未提交的数据成为“脏读”...转载 2019-11-04 15:57:28 · 1368 阅读 · 0 评论 -
事务的特性,隔离级别和锁的关系
前言我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。一次封锁or两段锁...转载 2019-11-04 15:56:22 · 1282 阅读 · 1 评论 -
Mysql数据库几种搜索引擎
数据库引擎介绍:MySQL数据库引擎取决于MySQL在安装的时候是如何被编译的。要添加一个新的引擎,就必须重新编译MYSQL。在缺省情况下,MYSQL支持三个引擎:ISAM、MYISAM和HEAP。另外两种类型INNODB和BERKLEY(BDB),也常常可以使用。如果技术高超,还可以使用MySQL+API自己做一个引擎。下面介绍几种数据库引擎: ISAM:ISAM是一个定义明确且历经...转载 2019-11-04 15:27:09 · 432 阅读 · 2 评论 -
MySQL EXPLAIN详解
相关文章:MySQL高性能表设计规范:http://www.jianshu.com/p/f797bbe11d76MySQL EXPLAIN详解:http://www.jianshu.com/p/ea3fc71fdc45MySQL 锁机制 常用知识点:http://www.jianshu.com/p/0d5b7cd592f9MySQL EXPLAIN命令是查询性能优化不可缺少的一...转载 2019-11-04 15:09:13 · 104 阅读 · 0 评论 -
MYSQL之索引详谈(三种介绍方式)
概述用来加快查询的技术很多,其中最重要的是索引。通常索引能够快速提高查询速度。如果不适用索引,MYSQL必须从第一条记录开始然后读完整个表直到找出相关的行。表越大,花费的时间越多。但也不全是这样。本文讨论索引是什么以及如何使用索引来改善性能,以及索引可能降低性能的情况。索引的本质MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以...转载 2019-11-01 11:02:52 · 1261 阅读 · 0 评论 -
表的垂直拆分和水平拆分
垂直拆分垂直拆分是指数据表列的拆分,把一张列比较多的表拆分为多张表通常我们按以下原则进行垂直拆分: 把不常用的字段单独放在一张表; 把text,blob等大字段拆分出来放在附表中; 经常组合查询的列放在一张表中; 垂直拆分更多时候就应该在数据表设计之初就执行的步骤,然后查询的时候用jion关键起来即可;水平拆分水平拆分是指数据表行的拆分,表的行数超过...转载 2019-11-01 10:52:03 · 585 阅读 · 0 评论 -
字段类型与合理的选择字段类型
本篇博客稍微有点长,它实际上包括两个内容:一是mysql字段类型的介绍,二是在mysql建表过程中是如何正确选择这些字段类型;字段类型数值MySQL 的数值数据类型可以大致划分为两个类别,一个是整数,另一个是浮点数或小数。许多不同的子类型对这些类别中的每一个都是可用的,每个子类型支持不同大小的数据,并且 MySQL 允许我们指定数值字段中的值是否有正负之分(UNSIGNED)或者...转载 2019-11-01 10:50:57 · 734 阅读 · 0 评论 -
数据中设计中的范式与反范式
设计关系数据库时,遵从不同的规范要求,设计出合理的关系型数据库,这些不同的规范要求被称为不同的范式,各种范式呈递次规范,越高的范式数据库冗余越小。但是有些时候一昧的追求范式减少冗余,反而会降低数据读写的效率,这个时候就要反范式,利用空间来换时间。目前关系数据库有六种范式:第一范式(1NF)、第二范式(2NF)、第三范式(3NF)、巴斯-科德范式(BCNF)、第四范式(4NF)和第五范式(5...转载 2019-11-01 10:50:02 · 129 阅读 · 0 评论 -
ER图,数据建模与数据字典
需求分析是做项目中的极为重要的一环,而作为整个项目中的'血液'--数据,更是重中之重。viso,workbench,phpmyadmin等软件可以帮我们更好的处理数据分析问题。ER图E-R方法是“实体-联系方法”(Entity-Relationship Approach)的简称。它是描述现实世界概念结构模型的有效方法。是表示概念模型的一种方式,用矩形表示实体型,矩形框内写明实体名;用...转载 2019-11-01 10:49:10 · 4709 阅读 · 1 评论 -
详解慢查询
查询mysql的操作信息show status -- 显示全部mysql操作信息show status like "com_insert%"; -- 获得mysql的插入次数;show status like "com_delete%"; -- 获得mysql的删除次数;show status like "com_select%"; -- 获得mysql的查询次数;show ...转载 2019-11-01 10:48:07 · 1652 阅读 · 0 评论 -
mysql的最佳索引攻略
Explain优化查询检测所谓索引就是为特定的mysql字段进行一些特定的算法排序,比如二叉树的算法和哈希算法,哈希算法是通过建立特征值,然后根据特征值来快速查找,而用的最多,并且是mysql默认的就是二叉树算法 BTREE,通过BTREE算法建立索引的字段,比如扫描20行就能得到未使用BTREE前扫描了2^20行的结果,具体的实现方式后续本博客会出一个算法专题里面会有具体的分析讨论;EX...转载 2019-11-01 10:45:46 · 125 阅读 · 0 评论 -
MySQL联合索引性能比较
在分析联合索引性能之前,温故下基础知识。1 数据结构1.1 B-树一个m阶树满足以下条件:每个节点至多拥有m颗子树; 根节点至少2颗子树(若存在子树的情况下); 非根节点至少拥有m/2颗子树,其范围为m/2 <= childNum(x) <= m; 所有叶子节点都在同一层,且为null; 有k颗子树的节点,其关键字数为k-1,ceil(m/2)-1 <= ...转载 2019-11-01 10:34:26 · 312 阅读 · 0 评论 -
mysql索引最左匹配原则的一些理解
id,name,cidCREATE TABLE `student` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `cid` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `name_cid_INX` (`name`,`cid...原创 2021-08-03 10:20:51 · 485 阅读 · 0 评论 -
多个单列索引和联合索引的区别详解
背景:为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql版本为 5.7.20创建测试表(表记录数为63188):CREATE TABLE `t_mobilesms_11` ( `id` bigint(20) NOT NUL...转载 2019-10-31 23:49:41 · 211 阅读 · 0 评论 -
聚集索引和非聚集索引(整理)
聚集索引 一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。 聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,后者按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。 聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一...转载 2019-10-31 23:46:07 · 273 阅读 · 0 评论