![](https://img-blog.csdnimg.cn/2019092715111047.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
MySQL
文章平均质量分 73
MySQL
这个作者很懒,什么都没留下…
展开
-
MySQL Oracle行列互转
在Oracle 11g中增加了2个查询:pivot(行转列) 和unpivot(列转行)原创 2022-10-20 16:41:51 · 321 阅读 · 0 评论 -
MySQL:主从复制
复制概述复制是指将主数据库的DDL 和 DML 操作通过二进制日志传到从库服务器中,然后在从库上对这些日志重新执行(也叫重做),从而使得从库和主库的数据保持同步。 MySQL支持一台主库同时向多台从库进行复制, 从库同时也可以作为其他从服务器的主库,实现链状复制。复制原理MySQL 的主从复制原理如下。从上层来看,复制分成三步:Master 主库在事务提交时,会把数据变更作为时间 Events 记录在二进制日志文件 Binlog 中。主库推送二进制日志文件 Binlog 中的日志事原创 2021-06-11 16:05:04 · 260 阅读 · 2 评论 -
MySQL:日志
在任何一种数据库中,都会有各种各样的日志,记录着数据库工作的方方面面,以帮助数据库管理员追踪数据库曾经发生过的各种事件。MySQL 也不例外,在 MySQL 中,有 4 种不同的日志,分别是错误日志、二进制日志(BINLOG 日志)、查询日志和慢查询日志,这些日志记录着数据库在不同方面的踪迹。错误日志错误日志是 MySQL 中最重要的日志之一,它记录了当 mysqld 启动和停止时,以及服务器在运行过程中发生任何严重错误时的相关信息。当数据库出现任何故障导致无法正常使用时,可以首先查看此日志。 .原创 2021-06-11 15:42:18 · 107 阅读 · 1 评论 -
MySQL:常用工具
mysql该mysql不是指mysql服务,而是指mysql的客户端工具。 语法mysql [options] [database]连接选项参数 :-u, --user=name 指定用户名-p, --password[=name] 指定密码-h, --host=name 指定服务器IP或域名-P, --port=# 指定连接端口 示例 :mysql -h 127.0.0.1 -P 3306 -u root -pmysql -h127.0.0.1 -P3306 -uro原创 2021-06-10 10:09:23 · 78 阅读 · 0 评论 -
MySQL:常用SQL技巧
SQL执行顺序原创 2021-06-09 14:13:48 · 79 阅读 · 0 评论 -
MySQL:锁问题
锁概述原创 2021-06-09 13:55:39 · 73 阅读 · 0 评论 -
MySQL:并发参数调整
从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在Mysql中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_cache_size、table_open_cahce。max_connections采用max_connections 控制允许连接到MySQL数据库的最大数量,默认值是 151。如果状态变量 connection_errors_max_connecti.转载 2021-06-08 18:05:05 · 80 阅读 · 0 评论 -
MySQL:内存管理及优化
内存优化原则将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。MyISAM 内存优化myisam存储引擎使用 key_buffer 缓存索引块,加速myis原创 2021-06-08 17:53:09 · 235 阅读 · 0 评论 -
MySQL:查询缓存优化
概述开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存。操作流程客户端发送一条查询给服务器;服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;将结果返回给客户端。查询缓存配置查看当前的MySQL数据库是否原创 2021-06-08 17:01:41 · 107 阅读 · 0 评论 -
MySQL:应用层优化
使用连接池对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立 数据库连接池,以提高访问的性能减少对MySQL的访问避免对数据进行重复检索 在编写应用代码时,需要能够理清对数据库的访问逻辑。能够一次连接就获取到结果的,就不用两次连接,这样可以大大减少对数据库无用的重复请求。 比如 ,需要获取书籍的id 和name字段 , 则查询如下select id , name from tb_book;之后,在业务逻辑中有需要获取到书籍状原创 2021-06-08 16:40:03 · 108 阅读 · 0 评论 -
MySQL:SQL优化
优化insert语句当进行数据的insert操作的时候,可以考虑采用以下几种优化方案。如果需要同时对一张表插入很多行数据时,应该尽量使用多个值表的insert语句,这种方式将大大的缩减客户端与数据库之间的连接、关闭等消耗。使得效率比分开执行的单个insert语句快。 示例, 原始方式为:insert into tb_test values(1,'Tom');insert into tb_test values(2,'Cat');insert into tb_test values(3,'J原创 2021-06-08 16:16:07 · 111 阅读 · 0 评论 -
MySQL:大批量插入优化
当使用load 命令导入数据的时候,适当的设置可以提高导入的效率。对于 InnoDB 类型的表,有以下几种方式可以提高导入的效率:主键顺序插入因为InnoDB类型的表是按照主键的顺序保存的,所以将导入的数据按照主键的顺序排列,可以有效的提高导入数据的效率。如果InnoDB表没有主键,那么系统会自动默认创建一个内部列作为主键,所以如果可以给表创建一个主键,将可以利用这点,来提高导入数据的效率。 脚本文件介绍 :sql1.log ----> 主键有序sql2.log ----> .原创 2021-06-08 11:39:43 · 368 阅读 · 0 评论 -
MySQL:索引优化
索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。验证索引提升查询效率在准备的表结构tb_item 中, 一共存储了 300 万记录;根据ID查询select * from tb_item where id = 1999\G;查询速度很快, 接近0s , 主要的原因是因为id为主键, 有索引;根据 title 进行精确查询select * from tb_item where title = 'iphoneX 移动3G .原创 2021-06-08 11:23:15 · 73 阅读 · 0 评论 -
MySQL:SQL优化步骤
在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化。当面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题。查看SQL执行频率MySQL 客户端连接成功后,通过 show [session|.原创 2021-06-04 10:33:32 · 100 阅读 · 0 评论 -
MySQL:存储引擎
存储引擎概述和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。MySQL5.0支持的存储引擎包含 : InnoDB 、MyISAM 、BDB、MEM转载 2021-06-03 10:11:48 · 64 阅读 · 0 评论 -
MySQL:体系结构
Mysql的体系结构概览整个MySQL Server由以下组成Connection Pool : 连接池组件Management Services & Utilities : 管理服务和工具组件SQL Interface : SQL接口组件Parser : 查询分析器组件Optimizer : 优化器组件Caches & Buffers : 缓冲池组件Pluggable Storage Engines : 存储引擎File System : 文件系统1) 连接层最原创 2021-06-02 17:13:11 · 163 阅读 · 0 评论 -
MySQL:触发器
介绍触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。触发器类型NEW 和 OLD的使用INSERT 型触发器NEW 表示将要或者已经新增的数据UPDATE 型触发器O原创 2021-06-02 16:53:13 · 75 阅读 · 0 评论 -
MySQL:存储过程和函数
存储过程和函数概述存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程和函数的区别在于函数必须有返回值,而存储过程没有。函数 : 是一个有返回值的过程 ;过程 : 是一个没有返回值的函数 ;创建存储过程delimiter $create procedure pro_test1()beginselect 'Hello Mysql';en转载 2021-06-02 11:45:33 · 95 阅读 · 0 评论 -
MySQL:索引
索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。 在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示:左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分别包含索引键值和一个指向对原创 2021-04-08 15:07:07 · 130 阅读 · 0 评论 -
MySQL:显示行号
SELECT ( @i := @i + 1 ) AS row, user_info.* FROM user_info, ( SELECT @i := 0 ) AS rows;SET @rownum=0;SELECT @rownum :=@rownum+1 AS rownum,user_info.* FROM user_info ORDER BY user_info.id DESC LIMIT 0,10;原创 2020-11-09 10:50:04 · 561 阅读 · 0 评论 -
MySQL:查询所有用户最后一条记录
DROP TABLE IF EXISTS `javakf`;CREATE TABLE `javakf` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL, `time` datetime NULL DEFAULT NULL, PRIMARY KEY (`id`) USING BTREE) ENGI原创 2020-06-15 15:56:44 · 4300 阅读 · 0 评论 -
MySQL:把一张表的数据插入到另一张表
插入全部数据INSERT INTO 目标表 SELECT * FROM 来源表; -- 2张表的字段完全一致例如:insert into Test1 select * from Test2;插入指定字段INSERT INTO 目标表 (字段1, 字段2, ...) SELECT 字段1, 字段2,... FROM 来源表; -- 字段必须保持一致例如:insert into Test1(id,name) select id,name from Test2;插入目标表中不存在的记录原创 2020-05-09 15:19:23 · 325 阅读 · 0 评论 -
MySQL:统计某个数据库中有多少张表
SELECT count( * ) TABLES, table_schema FROM information_schema.TABLES WHERE table_schema = 'face' GROUP BY table_schema;原创 2020-04-24 15:39:03 · 2943 阅读 · 0 评论 -
MySQL:锁表查询和解锁操作
1、在做数据库操作时,有时会因为自己的粗心或者程序设计上的缺陷导致锁表,在mysql中查看锁表和解锁的步骤如下:-- 1.查看当前数据库锁表的情况SELECT * FROM information_schema.INNODB_TRX;-- 2.杀掉查询结果中锁表的trx_mysql_thread_idkill trx_mysql_thread_id2、另外一种查询锁方法-- 1.查询...原创 2020-04-21 17:29:29 · 501 阅读 · 0 评论 -
MySQL:InnoDB数据更新导致锁表
MySQL的innodb存储引擎支持行级锁,innodb的行锁是通过给索引项加锁实现的,这就意味着只有通过索引条件检索数据时,innodb才使用行锁,否则使用表锁。例如:update sys_student set name='张三',age=20 where class_uuid='S191118095911042';该条件字段class_uuid没有添加索引,所以导致数据表被锁。解决办法...原创 2020-04-21 17:06:52 · 399 阅读 · 0 评论 -
MySQL:SQL编程
变量声明会话变量定义形式:set @变量名 = 值;它可以在编程环境和非编程环境中使用!使用的任何场合也都带该“@”符号。普通变量定义形式:declare 变量名 类型 [default 默认值];它必须先声明(即定义),此时也可以赋值;赋值跟会话变量一样: set 变量名 = 值;它只能在编程环境中使用!!!说明:什么是编程环境?存储过程,函数,触发器变量赋值...原创 2019-12-31 21:35:31 · 739 阅读 · 0 评论 -
MySQL:视图
视图的定义视图是由查询结果形成的一张虚拟表,是表通过某种运算得到的一个投影。同一张表可以创建多个视图。创建视图的语法: create view view_name as select 语句视图名跟表名是一个级别的名字,隶属于数据库;该语句的含义可以理解为:就是将该select命名为该名字(视图名);视图也可以设定自己的字段名,而不是select语句本身的字段名——通常不设置。视图的...原创 2019-12-31 20:43:10 · 365 阅读 · 0 评论 -
MySQL:索引详细介绍
什么是索引?为什么要建立索引?索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间。MySQL中索引的优点和缺点和使用原则优点所有的MySql列类型(字段类型)都可以被索引...原创 2019-12-31 10:20:21 · 230 阅读 · 0 评论 -
MySQL:索引语法
建表时添加索引普通索引-- 在book表中的year_publication字段上建立普通索引CREATE TABLE book( bookid INT NOT NULL, bookname VARCHAR(255) NOT NULL, authors VARCHAR(255) NOT NULL, in...原创 2019-12-30 18:50:20 · 1668 阅读 · 2 评论 -
MySQL:数据库优化
Mysql性能优化概述在应用开发的过程中,由于前期数据量少,开发人员编写的SQL语句或者数据库整体解决方案都更重视在功能上的实现,但是当应用系统正式上线后,随着生成数据量的急剧增长,很多SQL语句和数据库整体方案开始逐渐显露出了性能问题,对生成的影响也越来越大,此时Mysql数据库的性能问题成为系统应用的瓶颈,因此需要进行Mysql数据库的性能优化。性能下降的表现执行时间长等待时间长...原创 2019-12-06 10:28:07 · 614 阅读 · 0 评论 -
MySQL:锁问题
锁的概念和分类在现实生活中是为我们想要隐藏于外界所使用的一种工具,在计算机中,是协调多个进程或线程并发访问某一资源的一种机制,在数据库当中,除了传统的计算资源(CPU、RAM、I/O等等)的争用之外,数据也是一种供许多用户共享访问的资源,如何保证数据并发访问的一致性、有效性,是所有数据库必须解决的一个问题,锁的冲突也是影响数据库并发访问性能的一个重要因素。锁对数据库而言显得尤为重要。在购买商品...原创 2019-12-06 09:37:51 · 306 阅读 · 0 评论 -
MySQL:存储过程,函数,触发器
存储过程,函数的介绍MySQL从5.0版本开始支持存储过程和函数。存储过程和函数是事先经过编译和存储在数据库中的一段SQL语句的集合,然后直接通知调用执行即可,所以调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程和函数的区别在于函数必须有返回值,而存储过程没有, 存储过程的参数可以使用IN,OUT,INOUT...原创 2019-12-05 12:04:35 · 568 阅读 · 0 评论 -
MySQL:存储引擎
存储引擎的概念和查看存储引擎的概念插件式存储引擎是Mysql中最重要的特性之一,用户可以根据应用的需要选择如何存储数据和索引,是否使用事物等,从而改善你的应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎,MySQL默认支持多种存储引擎,以适应不同领域数据库的需求,用户可以通过选择不同的存储引擎,提高应用的效率,提供灵活的存储,用户也可以按照自己的需求定制和使用存储引...原创 2019-12-05 10:27:30 · 246 阅读 · 0 评论 -
MySQL:面试热点
数据库范式什么是范式创建表的规则,指导我们后期如何去设计自己的表。数据库表规范化的好处:减少数据的冗余。减少后期Java代码的工作量。三大范式小结反三范式反3NF:为了提高数据的性能,增加冗余字段,以便提高查询性能 目标 Select语句执行顺序SQL Select语句完整的执行顺序SQL语言不同于其他编程语言的最明显特征是处理代码的顺序。在大多数据库语言中,代码按编码顺...原创 2019-12-05 09:56:35 · 284 阅读 · 0 评论 -
MySQL高级
MySQL是使用最为广泛的开源数据库系统,是后端开发工程师,架构师,运维工程师,DBA,面试中几乎必定被问到的内容。本次课程以面试真题为起点,结合MySQL必问的热点技能为方向,覆盖MySQL面试相关的方方面面,梳理和总结相关知识点。主要内容目标 :MySQL常见基础面试热点 MySQL语句的执行顺序 MySQL内外,全连接深入 存储引擎的选择和区别 存储过程,函数,触发器 锁问题深...原创 2019-12-05 09:38:24 · 502 阅读 · 0 评论