MySQL
文章平均质量分 72
hellozhxy
这个作者很懒,什么都没留下…
展开
-
Go语言操作MySQL
MySQL是业界常用的关系型数据库,本文介绍了Go语言如何操作MySQL数据库。Go操作MySQL连接Go语言中的database/sql包提供了保证SQL或类SQL数据库的泛用接口,并不提供具体的数据库驱动。使用database/sql包时必须注入(至少)一个数据库驱动。我们常用的数据库基本上都有完整的第三方实现。例如:MySQL驱动下载依赖go get -u github.com/go-sql-driver/mysql使用MySQL驱动func Open(drive转载 2022-02-23 15:12:38 · 3056 阅读 · 1 评论 -
无法连接 服务器/虚拟机中的数据库,报错Access denied for user ‘root‘@‘192.168.1.101‘
情境在用 yml 配置 SpringBoot 连接虚拟机数据库时,不但连接不上、项目无法启动,报错还是本地连接失败。报错Access denied for user 'root'@'192.168.1.101' (using password: NO)解决由于项目刚刚搭起来,我想还是配置问题。因为配的数据库地址不是本机的数据库,配置IP与报错不符,所以还是去 yml 配置中去找。最后通过查资料发现只要给 password 的内容加上 "" 即可。错误配置:password: qwert转载 2021-12-19 13:12:42 · 1167 阅读 · 0 评论 -
数据库连接数过多 too many
出现这个情况说明最大连接数少了1.首先咱们可以关闭MySQL服务 #linux下使用这个命令 service mysql stop #win下是这个 net stop mysql 2.启动MySQL #linux下使用这个命令 service mysql start #win下是这个 net start mysql 3.登录mysql mysql -u root -...原创 2021-12-19 13:05:45 · 998 阅读 · 0 评论 -
MySQL索引对NULL值的处理
# 索引不会包含有NULL值的列只要列中包含有NULL值都将不会被包含在索引中,复合索引中只要有一列含有NULL值,那么这一列对于此复合索引就是无效的。所以我们在数据库设计时不要让字段的默认值为NULL。在很多库表设计规范、某某军规的文章中,是不是经常会看到类似这样的内容。小编也经常看到这样的内容,并且在编写规范的时候,准备也把这一条加进去。但在按部就班之余,小编抽空验证了一下,发现事实却并非如此!小编使用的MySQL版本是社区版 5.7.21新建测试表 t1,插入不含NULL值得100.原创 2021-10-11 11:49:29 · 7458 阅读 · 0 评论 -
MySQL_列值为null对索引的影响
一.首先看一个我在某公众号看到的一个关于数据库优化的举措二.如果where子句中查询的列执行了 “is null” 或者 “is not null” 或者 “<=> null” 会不会使用索引呢?先列出结论:where子句中使用上述对null的判断,如果判断的列设置了索引,那就可以使用到索引三.测试:1.建表1 CREATE TABLE`test_null_index` (2 `id` int(11) DEFAULT NULL,3 `mark` varchar(20) DEF原创 2021-10-11 11:19:40 · 2113 阅读 · 0 评论 -
mysql常用的hint
对于经常使用oracle的朋友可能知道,oracle的hint功能种类很多,对于优化sql语句提供了很多方法。同样,在mysql里,也有类似的hint功能。下面介绍一些常用的。[b]强制索引 FORCE INDEX[/b]SELECT * FROM TABLE1 FORCE INDEX (FIELD1) …以上的SQL语句只使用建立在FIELD1上的索引,而不使用其它字段上的索引。[b]忽略索引 IGNORE INDEX[/b]SELECT * FROM TABLE1 IGNORE INDEX .原创 2021-10-11 10:00:20 · 1502 阅读 · 0 评论 -
会员中心 收藏动态消息创作SELECT LAST_INSERT_ID() 的使用和注意事项
转载请注明出处:http://blog.csdn.net/czd3355/article/details/71302441首先我先解释以下在在映射文件中的代码是什么意思。<insert id="insertStudent" parameterType="com.czd.mybatis01.bean.Student"> INSERT stu(name)VALUES (#{name}) <selectKey keyProperty="id" order="AFTE...转载 2021-09-08 13:45:24 · 96 阅读 · 0 评论 -
MySQL知识点
https://mp.weixin.qq.com/s/pC0_Y7M7BkoUmlRwneZZdA一、为什么用自增列作为主键1、如果我们定义了主键(PRIMARY KEY),那么InnoDB会选择主键作为聚集索引。如果没有显式定义主键,则InnoDB会选择第一个不包含有NULL值的唯一索引作为主键索引。如果也没有这样的唯一索引,则InnoDB会选择内置6字节长的ROWID作为隐含的聚集索引(ROWID随着行记录的写入而主键递增,这个ROWID不像ORACLE的ROWID那样可引用,是隐含转载 2021-08-30 19:20:15 · 126 阅读 · 0 评论 -
Mysql Innodb LBCC详解
什么是存储引擎?存储引擎可理解为对磁盘的操作方式,是一套存储数据的规范,Mysql是一个插拔式的存储引擎。默认的Innodb并不是由Mysql团队研发,而是由第三方公司研发产生。它的最重要作用是修饰表,每个表也可以用不同的存储引擎来修饰。Innodb优秀的设计使得Mysql5.5之后的版本默认使用Innodb引擎事务概述隔离性:事务是一组不可分割的操作集合。破坏事务隔离性是由数据并发访问导致,破坏事务隔离性导致的脏读,幻读,不可重复读三个问题。使用四种事务隔离级别解决这些问题,具体机制是Mvcc机制转载 2021-05-06 16:29:42 · 208 阅读 · 1 评论 -
索引下推
概述索引条件下推优化(Index Condition Pushdown (ICP) )是MySQL5.6添加的,用于优化数据查询。不使用索引条件下推优化时存储引擎通过索引检索到数据,然后返回给MySQL服务器,服务器然后判断数据是否符合条件。 当使用索引条件下推优化时,如果存在某些被索引的列的判断条件时,MySQL服务器将这一部分判断条件传递给存储引擎,然后由存储引擎通过判断索引是否符合MySQL服务器传递的条件,只有当索引符合条件时才会将数据检索出来返回给MySQL服务器。索引条件下...转载 2021-02-25 16:03:03 · 787 阅读 · 0 评论 -
mysql索引篇之覆盖索引、联合索引、索引下推
覆盖索引在之前《mysql索引初识》这篇文章中提到过,mysql的innodb引擎通过搜索树方式实现索引,索引类型分为主键索引和二级索引(非主键索引),主键索引树中,叶子结点保存着主键即对应行的全部数据;而二级索引树中,叶子结点保存着索引值和主键值,当使用二级索引进行查询时,需要进行回表操作。假如我们现在有如下表结构CREATE TABLE `user_table` ( `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `username`.转载 2021-02-25 15:17:30 · 1579 阅读 · 0 评论 -
MySQL 索引知识点总结
作者:fanili,腾讯 WXG 后台开发工程师知其然知其所以然!本文介绍索引的数据结构、查找算法、常见的索引概念和索引失效场景。什么是索引?在关系数据库中,索引是一种单独的、物理的对数据库表中一列或多列的值进行排序的一种存储结构,它是某个表中一列或若干列值的集合和相应的指向表中物理标识这些值的数据页的逻辑指针清单。索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容。(百度百科)索引的目的是提高查找效率,对数据表的值集合进行了排序,并按照一定数据结构进行了存储。本文将从一转载 2021-02-01 15:53:25 · 222 阅读 · 0 评论 -
InnoDB索引原理详解
摘要: 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。 InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM,文档)。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。 这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦请指出。 1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的转载 2020-10-13 09:49:33 · 524 阅读 · 0 评论 -
为什么使用了索引,查询还是慢?
经常有同学问我,我的一个SQL语句使用了索引,为什么还是会进入到慢查询之中呢?今天我们就从这个问题开始来聊一聊索引和慢查询。另外插入一个题外话,个人认为团队要合理的使用ORM,可以参考 ORM的权衡和抉择。合理利用的是ORM在面向对象和写操作方面的优势,避免联合查询上可能产生的坑(当然如果你的Linq查询能力很强另当别论),因为ORM屏蔽了太多的DB底层的知识内容,对程序员不是件好事,对性能有极致追求,但是ORM理解不透彻的团队更加要谨慎。案例剖析 言归正传,为了实验,我创建了如下表:..转载 2020-10-12 09:59:11 · 395 阅读 · 0 评论 -
把MySQL中的各种锁及其原理都画出来
疫情期间在家工作时,同事使用了 insert into on duplicate key update 语句进行插入去重,但是在测试过程中发生了死锁现象:ERROR 1213 (40001): Deadlock found when trying to get lock; try restarting transaction由于开发任务紧急,只是暂时规避了一下,但是对触发死锁的原因和相关原理不甚了解,于是这几天一直在查阅相关资料,总结出一个系列文章供大家参考,本篇是上篇,主要介绍 MySQL 加锁转载 2020-06-30 15:16:24 · 470 阅读 · 0 评论 -
从原理上理解MySQL的优化建议
概述自从学习 MySQL 以来,我们一直听到或者看到很多优化建议,比如说不要用 select * 查询,用什么字段就查什么字段;建议用自增主键来作为表的主键,等等。这些建议听得很多感觉都成了 MySQL 开发的常识了,但是对于这些优化建议,我们有没有想过为什么要这么做呢?这篇博文我们从 MySQL 的原理出发,来解释下为什么有这些优化建议?本文实验环境 MySQL 5.7.25预备知识B+ 树索引MySQL 的默认存储引擎 InnoDB 使用 B+ 树来存储数据的,所以在分析优化建议之前转载 2020-06-09 16:55:41 · 241 阅读 · 0 评论 -
Mysql 索引底层原理
一步一步推导出 Mysql 索引的底层数据结构。Mysql 作为互联网中非常热门的数据库,其底层的存储引擎和数据检索引擎的设计非常重要,尤其是 Mysql 数据的存储形式以及索引的设计,决定了 Mysql 整体的数据检索性能。我们知道,索引的作用是做数据的快速检索,而快速检索的实现的本质是数据结构。通过不同数据结构的选择,实现各种数据快速检索。在数据库中,高效的查找算法是非常重要的,因为数...转载 2020-03-26 12:21:07 · 134 阅读 · 0 评论 -
MySQL总结
1.开局一张图一条SQL语句过来的流程是什么样的?那就follow me。哈哈哈哈,皮一下很开心。1.当客户端连接到MySQL服务器时,服务器对其进行认证。可以通过用户名与密码认证,也可以通过SSL证书进行认证。登录认证后,服务器还会验证客户端是否有执行某个查询的操作权限。2.在正式查询之前,服务器会检查查询缓存,如果能找到对应的查询,则不必进行查询解析,优化,执行等过程,直接返回缓存中的...转载 2020-03-17 17:03:23 · 236 阅读 · 1 评论 -
MySQL锁总结
MySQL 就是其中之一,它经历了多个版本迭代。数据库锁是 MySQL 数据引擎的一部分,今天我们就一起来学习 MySQL 的数据库锁和它的优化。MySQL 锁分类当多个事务或者进程访问同一个资源的时候,为了保证数据的一致性,就需要用到锁机制。从锁定资源的角度来看,MySQL 中的锁分为: 表级锁 行级锁 页面锁 表级锁:对整张表加...转载 2019-12-04 20:39:22 · 342 阅读 · 0 评论 -
Mysql跨机房同步方案
随着用户量的不断累积,Mysql从单实例单节点发展到多实例多节点的主备,再到一个机房几十台Myql实例,但是现在,一个机房也开始慢慢无法承受庞大的数据吞吐,多机房的理念开始构建。 假设现有两个机房,需要做到数据同步。 以下是架构图(实际架构图根据现有机房架构和实际会比下图复杂,但整体思路不变): Mycat、Canal、Otter是关键的三...转载 2019-11-14 13:29:22 · 1056 阅读 · 0 评论 -
mysql Insert on duplicate引发的死锁
表CREATE TABLE `test_dup` (`id` int(11) NOT NULL AUTO_INCREMENT,`num` int(10) unsigned DEFAULT NULL,`name` varchar(45) DEFAULT NULL,PRIMARY KEY (`id`),UNIQUE KEY `num_index` (`num`)) ENGI...转载 2019-10-16 13:50:33 · 2510 阅读 · 0 评论 -
JDBC防止SQL注入原理
一、基本解釋1.JDBC(Java DataBase Connection):它是Java用来执行Sql的Java Api;可以为多种关系型数据库提供统一的访问接口,他是一组Java编写的类和接口。2.statement:它是 Java 执行数据库操作的一个重要接口,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句。Statement对象,用于执行不带参数的简单SQL语句...转载 2019-05-11 17:38:33 · 1352 阅读 · 0 评论 -
mysql批量提交的优化
背景用户修改布局时,需要批量更新mysql的xxxx_layout_xxxx表。批量操作的数据量是2-30条/次。批量操作是这次项目在技术上比 较关键的一个点,之前批量操作做过性能上的测试,mysql端问题不大,7000+tps,Java端的效率有些差,有优化空间。对批量的性能进行了测试,优化。过程如下。经测试,批量更新30条记录的时间是35ms。由于数据在mysql服务端中会有内存缓...转载 2019-06-12 14:42:52 · 1851 阅读 · 0 评论 -
MySQL死锁案例分:先delete,再insert,导致死锁
一、死锁案例MySQL版本:Percona MySQL Server 5.7.19隔离级别:可重复读(RR)业务逻辑:并发下按某个索引字段先delete记录,再insert记录比如:begin;delete from tb where order_id = xxx;insert into tb(order_id) values(xxx);commit;二、MySQL锁...转载 2019-03-01 11:25:11 · 11941 阅读 · 0 评论 -
Select For update语句浅析
Select …forupdate语句是我们经常使用手工加锁语句。通常情况下,select语句是不会对数据加锁,妨碍影响其他的DML和DDL操作。同时,在多版本一致读机制的支持下,select语句也不会被其他类型语句所阻碍。 借助for update子句,我们可以在应用程序的层面手工实现数据加锁保护操作。本篇我们就来介绍一下这个子句的用法和功能。 下面是采自Oracle官方文档《SQLLangua...转载 2018-05-25 17:39:57 · 39704 阅读 · 1 评论 -
SQL优化方案
在进行MySQL的优化之前,必须要了解的就是MySQL的查询过程,很多查询优化工作实际上就是遵循一些原则,让MySQL的优化器能够按照预想的合理方式运行而已。图-MySQL查询过程1优化的哲学注:优化有风险,涉足需谨慎a优化可能带来的问题? 优化不总是对一个单纯的环境进行,还很可能是一个复杂的已投产的系统; 优化手段本来就有很大的风险...转载 2019-03-26 18:11:51 · 203 阅读 · 0 评论 -
mysql的SQL_NO_CACHE(在查询时不使用缓存)和sql_cache用法
转自:http://www.169it.com/article/5994930453423417575.html为了测试sql语句的效率,有时候要不用缓存来查询。使用SELECT SQL_NO_CACHE ...语法即可SQL_NO_CACHE的真正作用是禁止缓存查询结果,但并不意味着cache不作为结果返回给query。目前流传的SQL_NO_CACHE...转载 2019-03-26 17:02:32 · 8628 阅读 · 2 评论 -
MySQL关闭查询缓存(QC)的两种方法
MySQLQuery Cache 会缓存select 查询,安装时默认是开启的,但是如果对表进行INSERT, UPDATE, DELETE, TRUNCATE, ALTER TABLE, DROP TABLE, or DROP DATABASE等操作时,之前的缓存会无效并且删除。这样一定程度上也会影响我们数据库的性能。所以对一些频繁的变动表的情况开启缓存是不明智的。还有一种情况我们测试数据库性...转载 2019-03-26 16:59:02 · 10975 阅读 · 0 评论 -
ON DUPLICATE KEY UPDATE 附带更新条件
ON DUPLICATE KEY UPDATE 1、根据表索引唯一性,如果在insert时冲突则改为update;实际场景使用中update时可能会需要一定的条件限制,但ON DUPLICATE KEY UPDATE不支持使用where关键字,可用IF关键字,使用方法如下: <insert id="checkInOrUpdate"> INSERT INTO rf_phas...转载 2018-07-06 19:43:23 · 13583 阅读 · 1 评论 -
MySQL事务隔离级别和Spring事务关系介绍
事务隔离级别介绍隔离级别 脏读 不可重复读 幻读 未提交读(Read uncommitted) 可能 可能 可能 已提交读(Read committed) 不可能 可能 可能 可重复读(Repeatable read) 不可能 不可能 可能 可串行化(Serializable ) 不可能 不可能...转载 2018-07-17 14:51:39 · 4842 阅读 · 1 评论 -
MySQL查询语句中的IN 和Exists 对比分析
背景介绍最近在写SQL语句时,对选择IN 还是Exists 犹豫不决,于是把两种方法的SQL都写出来对比一下执行效率,发现IN的查询效率比Exists高了很多,于是想当然的认为IN的效率比Exists好,但本着寻根究底的原则,我想知道这个结论是否适用所有场景,以及为什么会出现这个结果。网上查了一下相关资料,大体可以归纳为:外部表小,内部表大时,适用Exists;外部表大,内部表小时,适用IN。那我...转载 2018-06-29 10:37:01 · 125 阅读 · 0 评论 -
MYSQL批量插入数据库实现语句性能分析
假定我们的表结构如下代码如下 CREATE TABLE example (example_id INT NOT NULL,name VARCHAR( 50 ) NOT NULL,value VARCHAR( 50 ) NOT NULL,other_value VARCHAR( 50 ) NOT NULL) 通常情况下单条插入的sql语句我们会这么写:代码如下 INSERT INTO exampl...转载 2018-07-11 10:20:58 · 436 阅读 · 0 评论 -
mysql 聚簇索引 和聚簇索引 (二级索引)的 那些事
mysql的聚簇索引是指innodb引擎的特性,mysiam并没有,如果需要该索引,只要将索引指定为主键(primary key)就可以了。比如:[sql] view plain copycreate table blog_user ( user_Name char(15) not null check(user_Name !=''), user_Password char(15) ...转载 2018-05-25 19:35:54 · 790 阅读 · 0 评论 -
Delete&Insert引发的Mysql死锁
近日遇到一个比较奇怪的deadlock错误, 错误详情:Deadlock found when trying to get lock; try restarting transaction; nested exception is com.ibatis.common.jdbc.exception.NestedSQLException...跟踪代码后最终定位到一段业务逻辑:delete from A...转载 2018-05-25 17:52:14 · 11534 阅读 · 2 评论 -
MySQL 加锁处理分析
1 背景 11.1 MVCC:Snapshot Read vs Current Read 21.2 Cluster Index:聚簇索引 31.3 2PL:Two-Phase Locking 31.4 Isolation Level 42 一条简单SQL的加锁实现分析 52.1 组合一:id主键+RC 62.2 ...转载 2018-05-25 17:13:18 · 114 阅读 · 0 评论 -
MySQL事务控制语句
在mysql命令行的默认下,事务都是自动提交的,sql语句提交后马上会执行commit操作。因此开启一个事务必须使用begin,start transaction,或者执行 set autocommit=0; 可以使用的事务控制语句start transction | begin : 显示的开启一个事务 commit (commit work) commit work与co...转载 2018-05-25 11:13:18 · 4304 阅读 · 0 评论 -
mysql事务隔离级别
1.查看当前会话隔离级别 select @@tx_isolation; 2.查看系统当前隔离级别 select @@global.tx_isolation; 3.设置当前会话隔离级别 set session transaction isolatin level repeatable read; 4.设置系统当前隔离级别 set global transaction isolation level ...转载 2018-05-25 11:10:41 · 100 阅读 · 0 评论 -
理解MYSQL MVCC 实现机制
1. MVCC简介1.1 什么是MVCCMVCC是一种多版本并发控制机制。1.2 MVCC是为了解决什么问题?大多数的MYSQL事务型存储引擎,如,InnoDB,Falcon以及PBXT都不使用一种简单的行锁机制.事实上,他们都和MVCC–多版本并发控制来一起使用.大家都应该知道,锁机制可以控制并发操作,但是其系统开销较大,而MVCC可以在大多数情况下代替行级锁,使用MVCC,能降低其系统开销.1...转载 2018-05-20 20:11:19 · 168 阅读 · 0 评论 -
Innodb中的事务隔离级别和锁的关系
前言:我们都知道事务的几种性质,数据库为了维护这些性质,尤其是一致性和隔离性,一般使用加锁这种方式。同时数据库又是个高并发的应用,同一时间会有大量的并发访问,如果加锁过度,会极大的降低并发处理能力。所以对于加锁的处理,可以说就是数据库对于事务处理的精髓所在。这里通过分析MySQL中InnoDB引擎的加锁机制,来抛砖引玉,让读者更好的理解,在事务处理中数据库到底做了什么。一次封锁or两段锁?因为有大...转载 2018-05-19 22:41:45 · 120 阅读 · 0 评论 -
MySQL replace into 用法
MySQL replace into 用法(insert into 的增强版)在向表中插入数据的时候,经常遇到这样的情况:1. 首先判断数据是否存在; 2. 如果不存在,则插入;3.如果存在,则更新。在 SQL Server 中可以这样处理:if not exists (select 1 from t where id = 1) insert into t(id, update_time...转载 2018-07-06 19:44:42 · 275 阅读 · 0 评论