MySQL
文章平均质量分 67
MySQL
Java程序员廖志伟
《Java项目实战—深入理解大型互联网企业通用技术》(基础篇)、(进阶篇)作者、(CSDN、51CTO、阿里云)博主专家,研究过Spring、SpringBoot、Spring MVC、SpringCloud、Mybatis、Dubbo、Zookeeper、RabbitMQ、RocketMQ、Kafka、Redis、MySQL、 ElasticSearch、MongoDB、ShardingSphere、DDD、Kubernetes等技术,不定期分享高并发、高可用、高性能、微服务、分布式、海量数据、性能调优、云原生、项目管理、产品思维、技术选型、架构设计、求职面试、副业思维、个人成长等内容。
展开
-
【count(列名)、count(1)和 count(星号)有什么区别】
在本文中,我们介绍了count()函数的三种不同用法,即count(列名)count(1)和count(*)。count(列名)函数返回指定列中非空值的行数。count(1)函数返回表中的所有行数,无论是否存在空值。count(*)函数用于计算表中的所有行数,无论这些行是否包含空值。这三种用法都有各自的优缺点。如果你只需要计算特定列的行数,则可以使用count(列名)函数。如果你需要计算所有列的行数,则应该使用count(1)或count(*)函数。另外,由于count(1)和count(*)原创 2023-07-25 08:55:42 · 422 阅读 · 0 评论 -
【并发事务会产生哪些问题】
幻读是指在同一个事务内执行两次相同的查询语句,但结果集却不同,例如,事务T1首先查询一些数据,事务T2同时插入了一条符合此查询条件的记录,之后,事务T1再次执行相同的查询语句时,就会发现存在一个新的记录,这就是幻读。2.使用乐观锁:在读取数据时,先获取该行数据的版本号,之后在更新数据时,先检查当前版本号是否与读取时的版本号一致,如果一致,则说明该行数据未被其他事务修改,可以进行更新操作,否则需要重新读取数据并进行相应操作。脏读指的是一个事务读取到了另一个事务未提交的数据,导致读到的数据是不正确的。原创 2023-07-21 19:45:00 · 1155 阅读 · 0 评论 -
【InnoDB IO线程相关参数优化了解过吗】
例如,我们在一个高负载的游戏服务器上发现,InnoDB无法处理足够的IO请求,导致游戏体验变得非常差。通过将innodb_io_capacity_max设置为4000来解决这个问题,游戏性能得到了显著提高,玩家体验得到了改善。通过将innodb_write_io_threads设置为8来解决这个问题,写入性能得到了显著提高,网站的支付功能恢复正常。通过将innodb_io_capacity设置为400来解决这个问题,网络性能得到了显著提高,网站恢复正常。默认情况下,它设置为2000。原创 2023-07-18 22:00:00 · 1085 阅读 · 0 评论 -
【InnoDB内存相关的参数优化】
优化建议:innodb_log_buffer_size的大小需要与innodb_log_file_size参数相匹配。通常建议将innodb_log_buffer_size设置为innodb_log_file_size的1/4-1/2左右。经过调整,将innodb_log_buffer_size从8M增加到64M,解决了这个问题,同时提高了系统的性能和稳定性。innodb_buffer_pool_size是InnoDB引擎中最为重要的内存参数之一,也是最需要优化的参数。如果内存充足,则可以设置为较大的值。原创 2023-07-18 21:15:00 · 838 阅读 · 0 评论 -
【为什么LIKE以%开头索引会失效】
在数据库中使用LIKE语句进行模糊匹配时,如果通配符“%”出现在查询条件的开头,可能会导致索引失效,这是因为大多数索引默认是按照从左到右的顺序进行匹配的。但是,如果查询条件中的通配符“%”出现在开头,索引就无法按照从左到右的顺序匹配。如果我们在“name”列上创建了一个普通的B-Tree索引,MySQL将按照索引的顺序逐个匹配每个字符,直到找到所有以“abc”开头的行。例如,假设我们有一个包含100万行的表,其中有一个名为“name”的列,我们希望查询所有以“abc”开头的行。原创 2023-07-19 20:45:00 · 1917 阅读 · 0 评论 -
【介绍一下Page页的结构】
1.页头(Page Header): MySQL的页头包含了页的元数据信息,例如页的类型、大小等信息。记录的数量和大小取决于页的类型和使用的存储引擎。MySQL的页(Page)是数据库中的基本存储单位,由于它们在磁盘上的存储方式和内存中的缓存方式不同,因此熟悉页的结构对于优化数据库性能非常重要。MySQL中的页通常是16KB大小,由于它们通常是一次性读写的,因此它们需要优化和压缩以便在内存中更高效地使用。4.数据区(Data Area):页的数据区是存储存储在页中的实际数据的部分。原创 2023-07-19 20:30:00 · 1029 阅读 · 0 评论 -
【为什么写缓冲区 仅适用于非唯一普通索引页】
每当用户下单时,系统需要将订单信息插入订单表中,如果没有使用写缓冲区,每次订单的插入都需要对订单号进行排序和查找操作,而这些操作是非常耗时的。使用写缓冲区后,系统可以将订单信息插入操作缓存在内存中,等待缓冲区达到一定大小或超时后再一次性写入磁盘,大大提高了订单插入性能。MySQL的写缓冲区是一种提高写入性能和减少磁盘I/O操作的技术,它可以在内存中缓存待写入磁盘的数据。然而,它只适用于非唯一普通索引页,因为这些页的插入和更新操作比较频繁,并且它们的索引键不是唯一的,会有重复值。原创 2023-07-22 17:45:00 · 110 阅读 · 0 评论 -
【InnoDB引擎如何管理Page页】
当一个事务修改了某个数据行时,InnoDB不会立即修改该行对应的页,而是将该行的新版本写入一个称为回滚段(rollback segment)的内存区域。同时,InnoDB会为该行生成一个新的事务版本号(transaction ID),并将该版本号写入该行对应的索引中。在InnoDB中,页的管理是由一个称为缓冲池(buffer pool)的内存池来实现的。它是一个事务安全的、多版本的、支持外键的、高性能的引擎。在InnoDB中,数据是按页(page)来存储的,而InnoDB通过管理这些页来实现数据的读写。原创 2023-07-21 12:45:00 · 116 阅读 · 0 评论 -
【MySQL的CheckPoint技术】
MySQL的 CheckPoint (CheckPoint)技术,又称" redo log"(Redo log),是 MySQL数据库的核心技术之一,其目的是在发生故障或故障时,保证数据库中存储的数据可以得到有效的修复。对数据库进行的修改,包括写入,更新,删除等,都要进行相应的文档化,以确保数据在任何时候都是一致的。MySQL的 CheckPoint技术可以在一个服务器发生故障或者故障的时候,对 Redo日志中的每一个动作进行检测和播放,从而保证了数据的正常运行。原创 2023-06-12 21:57:54 · 336 阅读 · 0 评论 -
【MySQL主从架构】
文章目录一、实验目的与环境二、基础环境介绍三、搭建主从集群1、理论基础1、数据安全2、读写分离3、故障转移-高可用2、同步的原理3、搭建主从集群3.1 配置master主服务器3.2 配置slave从服务一、实验目的与环境 实验目的: MySQL是现在互联网最常用的开源数据库产品。但是我们平常开发使用,大都是用的单机服务。而在实际生产中,往往数据量会极为庞大,并且数据的安全性要求也更高,这样单机的MySQL,不管是性能还是安全都是达不到要求的。所以在生产环境中,MySQL必须是要搭建一套主从复制的原创 2022-04-10 16:07:34 · 966 阅读 · 27 评论 -
【MySQL我可以讲一个小时】
先从底层开始说吧,mysql底层的页的大小是16kb,假如,我有一张表对单行数据量就有16kb,那么这张表就只能存储1条数据了,这是非常恐怖的。mysql是从磁盘读取数据到内存的,是以磁盘块为基本单位的,位于同一磁盘块中的数据会被一次性读取出来,不是按需读取。以InnoDB存储引擎来说,它使用页作为数据读取单位,页是其磁盘管理的最小单位,默认大小是16kb。......原创 2022-02-21 18:37:17 · 7168 阅读 · 47 评论 -
【MySQL】
Mysql索引底层数据结构和算法,事务的隔离基本,四大属性的底层实现,传播行为,锁等等原创 2022-01-11 19:00:56 · 1003 阅读 · 9 评论 -
【悲观锁/乐观锁/排它锁/共享锁/表级锁/行级锁/死锁】
我是廖志伟,一名Java开发工程师、幕后大佬社区创始人、Java领域优质创作者、CSDN博客专家。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。原创 2021-12-16 08:45:00 · 846 阅读 · 0 评论 -
【MySQL四大属性底层实现原理】
我是廖志伟,一名Java开发工程师、幕后大佬社区创始人、Java领域优质创作者、CSDN博客专家。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。原创 2021-12-15 08:45:00 · 659 阅读 · 0 评论 -
【事务隔离级别】
我是廖志伟,一名Java开发工程师、幕后大佬社区创始人、Java领域优质创作者、CSDN博客专家。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。原创 2021-12-14 08:45:00 · 591 阅读 · 0 评论 -
【传播行为】
我是廖志伟,一名Java开发工程师、幕后大佬社区创始人、Java领域优质创作者、CSDN博客专家。拥有多年一线研发经验,研究过各种常见框架及中间件的底层源码,对于大型分布式、微服务、三高架构(高性能、高并发、高可用)有过实践架构经验。原创 2021-12-13 08:45:00 · 644 阅读 · 0 评论 -
MySQL数据库:第十六章:sql高级函数
SELECT ID,FID,APP_CODE,PARAM_VALUE,PARAM_TEXT,PARAM_SCHEAME,SHOWORDER FROM `G_APP_DATA_CONSUME_PARAM` WHERE FIND_IN_SET(`FID`,'1,2,3,') ORDER BY SHOWORDER DESC原创 2020-04-20 20:51:50 · 2119 阅读 · 2 评论 -
MySQL数据库:第十五章:MySQL安装到最后一步未响应MySQL Server Instance Configuration Wizard
MySQL安装到最后一步未响应第一个方法:打开C盘,并且显示隐藏文件,然后在C盘下就能找到一个文件夹叫 "ProgamData" ,打开它,删除里面的 "mysql" 文件夹,然后再重新安装mysql就可以了第二个方法:1.强退那个坑死人的未响应打√界面,也就是任务管理器强退,这个略,2.然后在本地硬盘找到MySQL的文件夹3.打开bin目录4.右键属性MySQLIn...原创 2019-07-03 19:45:00 · 1228 阅读 · 1 评论 -
MySQL数据库:第十四章:(DML)Data Manipulation Language数据操纵语言
作者:java_wxid回退至Mysql数据库首页#DML语句 ★Data Manipulation Language数据操纵语言关键字:insert 、update 、deleteUSE stu0906;CREATE TABLE stuinfo( id INT, stuname VARCHAR(20) NOT NULL, gender CHAR, borndate T...原创 2018-10-30 12:58:34 · 1121 阅读 · 0 评论 -
MySQL数据库:第十三章:常见约束
作者:java_wxid回退至Mysql数据库首页#常见约束理解:约束是用于限定表的字段的,为了保证数据表的完整性常见约束:★(not null)NOT NULL 非空:用于限定某字段为必填项,比如姓名、id等(default)DEFAULT 默认:用于限定某字段如果没有显式的插入值,默认存储的选项,比如性别、成绩等(primary key)PRIMARY KEY主键:用于限定某字段...原创 2018-10-30 12:53:28 · 923 阅读 · 0 评论 -
MySQL数据库:第十二章:(DDL)Data Define Language数据定义语言
作者:java_wxid回退至Mysql数据库首页#DDLData Define Language数据定义语言关键字:create、alter、drop库的管理表的管理#一、库的管理#1、创建库#语法:create database [if not exists] 库名CREATE DATABASE IF NOT EXISTS stu0906 ;#2、删除库#语法:dro...原创 2018-10-30 12:51:21 · 1054 阅读 · 0 评论 -
MySQL数据库:第十一章:合并查询(联合查询)
作者:java_wxid回退至Mysql数据库首页#进阶10:合并查询(联合查询)引入:一个结果集的查询的数据来自于多张表。但多张表之间没有任何关联关系。语法:select 查询列表 from 表1 unionselect 查询列表 from 表2 union…select 查询列表 from 表n 特点:①要求实现union的多条查询语句的查询列数必须一致,列名无要求,列的意...原创 2018-10-30 11:01:11 · 2155 阅读 · 99 评论 -
MySQL数据库:第十章:分页查询
作者:java_wxid回退至Mysql数据库首页#进阶9:分页查询 ★引入:实际的开发时,一页往往显示不全所有数据,则用到了分页查询语法:select 查询列表 ⑥from 表 ①【join 表 ②on 连接条件 ③ where 筛选 ...原创 2018-10-29 20:29:31 · 894 阅读 · 0 评论 -
MySQL数据库:第九章:子查询
作者:java_wxid回退至Mysql数据库首页#子查询概念:出现在其他语句内部的select语句,称为子查询或内查询其他语法:可以是select语句,也可以是create、insert、update等。只是select语句出现的较多外面如果是select语句,称为主查询或外查询位置:子查询可以放在select语句中的select后面、from后面、where或having后面、e...原创 2018-10-29 20:28:01 · 949 阅读 · 0 评论 -
MySQL数据库:第八章:连接查询
作者:java_wxid回退至Mysql数据库首页#进阶7:连接查询理解:查询语句中涉及到的字段来自于多张表,将这种查询称为多表连接查询语法:select 查询列表 from 表名1,表名2;引入案例:select name,boyname from beauty,boys;select name,boyname from beauty,boys where boyfriend_id...原创 2018-10-29 19:50:51 · 932 阅读 · 0 评论 -
MySQL数据库:第七章:分组查询
作者:java_wxid回退至Mysql数据库首页#进阶6:分组查询语法:select 查询列表 ④from 表名——————————①where 分组前条件—— ②group by 分组的字段③having 分组后条件 ⑤order by 排序列表 ⑥ 特点:1、查询列表往往是:分组函数和分组后的字段换句话说,和分组函数一同查询的字段,一般就是分组后的字段 2...原创 2018-10-29 19:38:26 · 1182 阅读 · 0 评论 -
MySQL数据库:第六章:分组函数/聚合函数
作者:java_wxid回退至Mysql数据库首页#进阶5:分组函数/聚合函数本质上就是一种函数,调用语法:select 函数名(实参列表);函数:单行函数(常见函数):有几行,最终有几个结果分组函数(聚合函数):一组中有多行,但最终一个结果,一般用作统计 分组函数:sum(参数):求和avg(参数):平均max(参数):求最大值min(参数):求最小值count(参数):...原创 2018-10-29 19:36:50 · 2394 阅读 · 94 评论 -
MySQL数据库:第五章:常见函数
作者:java_wxid回退至Mysql数据库首页#进阶4:常见函数函数:类似于java中的”方法“,将完成某个功能的一系列步骤封装起来,对外暴露一个名字,供外界调用当我们学习别人定义好的方法(函数),只需要关心两件事:①叫什么(函数名)②干什么(函数功能)sql中的函数:肯定有,并且仅有一个返回值调用语法:select 函数名(实参列表);一、数学函数:abs绝对值mod...原创 2018-10-29 19:28:45 · 1011 阅读 · 0 评论 -
MySQL数据库:第四章:排序查询
#进阶3:排序查询语法:select 查询列表——————③from 表名——————①where 条件——————②order by 排序列表 asc|desc;——————④特点:1、asc代表的是升序。升序是默认行为desc代表的是降序。2、排序列表支持单个字段、表达式、函数、别名,也支持以上的组合3、order by子句一般放在查询语句的最后!#1、通过单个字段进行...原创 2018-10-29 19:20:24 · 1051 阅读 · 0 评论 -
MySQL数据库:第三章:条件查询
作者:java_wxid#进阶2:条件查询语法:select 查询列表-----③from 表名 ----①where 条件表达式;-----②条件表达式的写法:情况一:关系表达式sql中的关系运算符:> < >= <= = <> !=情况二原创 2018-10-29 19:16:57 · 2522 阅读 · 122 评论 -
MySQL数据库:第二章:基础查询
作者:java_wxid#进阶一:基础查询语法:select 查询列表 from 表名;特点:1、查询的结果集是一个虚拟表,并没有真实存在2、查询列表支持常量、字段(列)、表达式、方法(函数)等类似于 System.out.println(一个值);补充:1、去重2、起别名3、常见的函数database()version()user()ifnull()concat(...原创 2018-10-29 19:14:50 · 1974 阅读 · 113 评论 -
MySQL数据库:第一章:理论与实战
理论部分:点击:最全MySQL知识点实战部分:练习用到的库:点击下载点击:基础查询点击:条件查询点击:排序查询点击:常见函数点击:分组函数/聚合函数点击:分组查询点击:连接查询点击:子查询点击:分页查询点击:合并查询(联合查询)点击:(DDL)数据定义语言点击:常见约束点击:(DML)数据操纵语言...原创 2018-10-23 10:37:34 · 3549 阅读 · 39 评论