![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
MySQL
文章平均质量分 82
Java硬件工程师
中国科学技术大学毕业,原支付宝Java开发工程师,立志做一名资深全栈工程师
展开
-
数据库系列
Redis数据库系列Redis数据库系列1.NoSQL简介2.当下NoSQL应用场景简介3.NoSQL数据库的四大分类4.分布式数据库CAP原理5.redis入门概述及简介6.redis五大数据类型7.redis事务8.主从复制Master/slaveMySQL数据库系列MySQL数据库系列MySQL基础系列1.SQL语句的分类与MySQL简单查询2.MySQL条件查询3.排序与分组函数4.group by和having5.连接查询6.子查询及limit分页7.MySQ原创 2021-04-11 11:40:00 · 95 阅读 · 1 评论 -
MySQL高级-MySQL锁
1 锁概述锁是计算机协调多个进程或线程并发访问某一资源的机制(避免资源争抢)。数据库中的锁可以用来解决因为并发访问导致数据出现的一些问题,如事务中的脏读,不可重复读机制。在数据库中,除传统的计算资源(如 CPU、RAM、I/O 等)的争用以外,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。从这个角度来说,锁对数据库而言显得尤其重要,也更加复杂。2.锁分类从对数据操作的粒度分 :1) 表锁:操作原创 2021-01-27 18:19:22 · 4712 阅读 · 13 评论 -
MySQL高级-MySQL并发参数调整
Mysql并发参数调整1 max_connections2 back_log3 table_open_cache4 thread_cache_size5 innodb_lock_wait_timeoutMysql并发参数调整从实现上来说,MySQL Server 是多线程结构,包括后台线程和客户服务线程。多线程可以有效利用服务器资源,提高数据库的并发性能。在Mysql中,控制并发连接和线程的主要参数包括 max_connections、back_log、thread_cache_size、table_.原创 2021-01-27 14:10:00 · 3366 阅读 · 7 评论 -
MySQL高级-内存管理及优化
1 内存优化原则1) 将尽量多的内存分配给MySQL做缓存,但要给操作系统和其他程序预留足够内存。2) MyISAM 存储引擎的数据文件读取依赖于操作系统自身的IO缓存,因此,如果有MyISAM表,就要预留更多的内存给操作系统做IO缓存。3) 排序区、连接区等缓存是分配给每个数据库会话(session)专用的,其默认值的设置要根据最大连接数合理分配,如果设置太大,不但浪费资源,而且在并发连接较高时会导致物理内存耗尽。2 MyISAM 内存优化myisam存储引擎使用 key_buffer 缓存索引原创 2021-01-26 21:36:53 · 2689 阅读 · 4 评论 -
MySQL高级-MySQL查询缓存优化
1 概述开启Mysql的查询缓存,当执行完全相同的SQL语句的时候,服务器就会直接从缓存中读取结果,当数据被修改,之前的缓存会失效,修改比较频繁的表不适合做查询缓存。2 操作流程1. 客户端发送一条查询给服务器;2. 服务器先会检查查询缓存,如果命中了缓存,则立即返回存储在缓存中的结果。否则进入下一阶段;3. 服务器端进行SQL解析、预处理,再由优化器生成对应的执行计划;4. MySQL根据优化器生成的执行计划,调用存储引擎的API来执行查询;5. 将结果返回给客户端。3 查询缓存配置原创 2021-01-26 20:47:23 · 1743 阅读 · 1 评论 -
MySQL高级-MySQL应用优化
前面章节,我们介绍了很多数据库的优化措施。但是在实际生产环境中,由于数据库本身的性能局限,就必须要对前台的应用进行一些优化,来降低数据库的访问压力。1 使用连接池对于访问数据库来说,建立连接的代价是比较昂贵的,因为我们频繁的创建关闭连接,是比较耗费资源的,我们有必要建立数据库连接池,以提高访问的性能。如果我们不用数据库连接池,那么我们每次操作数据库都需要获取连接,数据库操作完毕之后需要关闭连接,这样我们就需要频繁的开启和关闭连接,这样,就比较耗费资源。建立数据库连接池之后,我们获取数据库连接的时候就原创 2021-01-26 19:04:55 · 3051 阅读 · 7 评论 -
MySQL数据库系列
MySQL基础系列1.SQL语句的分类与MySQL简单查询2.MySQL条件查询3.排序与分组函数4.group by和having5.连接查询6.子查询及limit分页7.MySQL数据库事务MySQL高级系列1.索引2.视图3,存储过程和函数4.触发器5.MySQL存储引擎6.SQL优化步骤7.索引的使用及优化8.SQL优化...原创 2021-01-26 16:33:54 · 1959 阅读 · 1 评论 -
MySQL高级-SQL优化
1.大批量插入数据环境准备 :CREATE TABLE `tb_user_1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(45) NOT NULL, `password` varchar(96) NOT NULL, `name` varchar(45) NOT NULL, `birthday` datetime DEFAULT NULL, `sex` char(1) DEFAULT NULL, `em原创 2021-01-26 16:07:31 · 1849 阅读 · 2 评论 -
MySQL高级-索引的使用及优化
关于MySQL索引一些具体特性在MySQL索引中有具体的介绍,这里主要介绍索引的使用索引是数据库优化最常用也是最重要的手段之一, 通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题。1 验证索引提升查询效率在我们准备的表结构tb_item 中, 一共约存储了250万记录;具体的创建过程参见SQL优化步骤(explain等)查看tb_item表中元素的个数:mysql> select count(*) from tb_item;+----------+| count(*) |+原创 2021-01-24 19:03:58 · 5295 阅读 · 4 评论 -
MySQL高级-SQL优化步骤
优化SQL步骤(explain等)1 查看SQL执行频率2 定位低效率执行SQL3 explain分析执行计划3.1 环境准备3.2 explain 之 id3.3 explain 之 select_type3.4 explain 之 table3.5 explain 之 type3.6 explain 之 key3.7 explain 之 rows3.8 explain 之 extra4 show profile分析SQL5 trace分析优化器执行计划在应用的的开发过程中,由于初期数据量小,开发人员原创 2021-01-22 15:29:12 · 2072 阅读 · 3 评论 -
MySQL高级-MySQL存储引擎
1.MySQL体系结构MySQL体系结构图解释说明:MySQL体系结构图和我们web开发中的三层架构是十分类似的。web开发中,前台发出请求经过controller,controller调用service,service调用dao,dao再去调用数据库。MySQL体系结构中,最上面的部分代表的是客户端,在这些客户端的连接中,最熟悉的是JDBC,我们在程序中可以通过JDBC来操作MySQL。下面的一大块就是MySQL的服务端。MySQL的服务端最上面一层是MySQL连接池,连接池中有很多的组件和模原创 2021-01-21 15:49:26 · 2053 阅读 · 3 评论 -
MySQL高级-触发器
1 介绍触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SQL语句集合。(类似JS中的事件)触发器的这种特性可以协助应用在数据库端确保数据的完整性 , 日志记录 , 数据校验等操作 。使用别名 OLD 和 NEW 来引用触发器中发生变化的记录内容,这与其他的数据库是相似的。现在触发器还只支持行级触发,不支持语句级触发。触发器类型NEW 和 OLD的使用INSERT 型触发器NEW 表示将要或者已经新增的数据U原创 2021-01-19 18:22:41 · 1691 阅读 · 4 评论 -
MySQL高级-存储过程和函数
存储过程和函数1.存储过程和函数概述2 创建存储过程3 调用存储过程4 查看存储过程5 删除存储过程6 语法6.1 变量6.2 if条件判断6.3 传递参数6.4 case结构6.5 while循环6.6 repeat结构6.7 loop语句6.8 leave语句6.9 游标/光标7 存储函数1.存储过程和函数概述存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处原创 2021-01-19 17:08:39 · 1830 阅读 · 6 评论 -
MySQL高级-视图
本节例子中用到的表结构:create database demo_01 default charset=utf8mb4;use demo_01;CREATE TABLE `city` (`city_id` int(11) NOT NULL AUTO_INCREMENT,`city_name` varchar(50) NOT NULL,`country_id` int(11) NOT NULL,PRIMARY KEY (`city_id`)) ENGINE=InnoDB DEFAULT C原创 2021-01-16 17:21:20 · 2441 阅读 · 3 评论 -
MySQL高级-索引
1.索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据 库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据, 这样就可以在这些数 据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :提炼观点:索引是什么?索引是一种数据结构作用是什么?高效获取数据左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是 一定物理相邻的),(而其中的col原创 2021-01-16 13:09:34 · 5819 阅读 · 6 评论 -
MySQL学习-MySQL数据库事务
事务概述1、什么是事务?一个事务是一个完整的业务逻辑单元,不可再分。比如:银行账户转账,从A账户向B账户转账10000.需要执行两条update语句:update t_act set balance = balance - 10000 where actno = 'act-001';update t_act set balance = balance + 10000 where actno = 'act-002';以上两条DML语句必须同时成功,或者同时失败,不允许出现一条成功,一条失败。要原创 2020-12-27 10:25:36 · 1966 阅读 · 4 评论 -
MySQL学习-子查询及limit分页
操作的表mysql> select * from emp;+-------+--------+-----------+------+------------+---------+---------+--------+| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |+-------+--------+-----------+------+------------+---------+--原创 2020-12-26 13:14:03 · 5534 阅读 · 4 评论 -
MySQL学习-连接查询
操作的表mysql> select * from emp;+-------+--------+-----------+------+------------+---------+---------+--------+| EMPNO | ENAME | JOB | MGR | HIREDATE | SAL | COMM | DEPTNO |+-------+--------+-----------+------+------------+---------+--原创 2020-12-26 12:43:12 · 2337 阅读 · 2 评论 -
MySQL学习-group by和having
操作的表mysql> select * from emp;EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO7369SMITHCLERK79021980-12-17800.00NULL207499ALLENSALESMAN76981981-02-201600.00300.00307521WARDSALESMAN76981981-02-221250.00500.00307566JON原创 2020-12-26 11:06:13 · 2045 阅读 · 3 评论 -
MySQL学习-排序与分组函数
操作的表mysql> select * from emp;EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO7369SMITHCLERK79021980-12-17800.00NULL207499ALLENSALESMAN76981981-02-201600.00300.00307521WARDSALESMAN76981981-02-221250.00500.00307566JON原创 2020-12-26 10:30:13 · 3069 阅读 · 3 评论 -
MySQL学习-MySQL条件查询
1.条件查询概述操作的表mysql> select * from emp;EMPNOENAMEJOBMGRHIREDATESALCOMMDEPTNO7369SMITHCLERK79021980-12-17800.00NULL207499ALLENSALESMAN76981981-02-201600.00300.00307521WARDSALESMAN76981981-02-221250.00500.0030原创 2020-12-25 18:57:40 · 1777 阅读 · 1 评论 -
MySQL学习-SQL语句的分类与MySQL简单查询
1.SQL语句的分类学习MySQL主要还是学习通用的SQL语句,那么SQL语句包括增删改查,SQL语句怎么分类呢?DQL(数据查询语言): 查询语句,凡是select语句都是DQL。DML(数据操作语言):insert delete update,对表当中的数据进行增删改。DDL(数据定义语言):create drop alter,对表结构的增删改。TCL(事务控制语言):commit提交事务,rollback回滚事务。(TCL中的T是Transaction)DCL(数据控制语言): grant原创 2020-12-25 12:22:54 · 1771 阅读 · 0 评论