
MySQL
文章平均质量分 67
工作中总结
蚊子爱喝水
欢迎来到我的博客!我是一名热衷于PHP开发的程序员。在这个博客里,我将分享我在PHP开发过程中的经验、技巧、见解和学习心得。无论您是PHP初学者还是经验丰富的开发者,我相信您都能在这里找到有价值的内容。
展开
-
MySQL JSON 数据类型使用
关系型的结构化存储存在一定的弊端,因为它需要预先定义好所有的列以及列对应的类型。但是业务在发展过程中,或许需要扩展单个列的描述功能,这时,如果能用好 JSON 数据类型,那就能打通关系型和非关系型数据的存储之间的界限,为业务提供更好的架构选择。当然,很多同学在用 JSON 数据类型时会遇到各种各样的问题,其中最容易犯的误区就是将类型 JSON 简单理解成字符串类型。但当你看完这篇文章后,会真正认识到 JSON 数据类型的威力,从而在实际工作中更好地存储非结构化的数据。JSON 数据类型JSON(转载 2021-12-24 16:41:34 · 874 阅读 · 0 评论 -
mysql 更新并生成指定范围随机数
1、生成0-10的随机数SELECT FLOOR(RAND() * 10)2、生成10-100的随机数SELECT FLOOR(10 +RAND() * 100)3、更新某表数据UPDATE table set value=FLOOR(50 +RAND() * 150)原创 2021-10-26 13:46:43 · 6475 阅读 · 0 评论 -
数据库连接池到底应该设多大?
|前言本文内容95%译自这篇文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing我在研究HikariCP(一个数据库连接池)时无意间在HikariCP的Github wiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽。故在此做译文分享。|正文数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要..转载 2021-09-09 11:12:34 · 620 阅读 · 2 评论 -
mysql删除重复记录并且只保留一条
测试 表结构信息如下 id为主键思路 : 根据name分组,查找出id最小的。然后再查找id不包含刚才查出来的。这样就查询出所有的重复数据(除了id最小的那行)第一步:根据name 分组SELECT MIN(id) as minid,name FROM test GROUP BY `name`;第二步:查找id不包含上面出的数据 注意下面语句会报错DELETE FROM test where id not in (SELECT MIN(id) as minid,name ..原创 2021-02-23 10:57:57 · 390 阅读 · 0 评论 -
Mysql子查询中不能使用limit或者in
SQl语句SELECT `a`.`article_id` FROM `article_tags` `a` WHERE a.tag_id in (SELECT id from tags WHERE `name`='tagName' and fmid in (5,6,7) LIMIT 100) ORDER BY a.article_id desc LIMIT 1报错信息SQLSTATE[42000]: Syntax error or access violation: 1235 This原创 2020-12-14 16:23:41 · 942 阅读 · 0 评论 -
MySQL 正则替换数据:REGEXP_REPLACE函数
表数据功能需求:把 name 字段中的a标签内容替换为空实现SQL:UPDATE tableName set `name` = REGEXP_REPLACE(`name`, '<.*>', '') WHERE `name` REGEXP '<.*>';用法:REGEXP_REPLACE()函数用于模式匹配。它通过匹配字符来替换给定的字符串字符。REGEXP_REPLACE(expr,pat,repl[,pos[,occurrence[,mat...原创 2020-08-20 16:30:18 · 10462 阅读 · 0 评论 -
mysql表中ID自增主键 删除数据后 在重启 ID会发生变化吗
mysql8.0之前:使用InnoDB存储引擎,如果新增一条记录(不重启mysql的情况下),这条记录的id是18;但是如果重启MySQL的话,这条记录的ID是15。因为InnoDB表只把自增主键的最大ID记录到内存中,所以重启数据库或者对表OPTIMIZE操作,都会使最大ID丢失。如果我们使用表的类型是MylSAM,那么这条记录的ID就是18。因为MylSAM表会把自增主键的最大ID记录到数据文件里面,重启MYSQL后,自增主键的最大ID也不会丢失。mysql8.0:InnoDB存储引擎和My原创 2020-08-11 11:06:06 · 2439 阅读 · 8 评论 -
mysql重启服务 自增列id的auto_increment重置问题
mysql8.0 之前版本 重启服务 自增列id的auto_increment会重置为当前列最大值加1原因:Innodb表把自增主键的最大ID记录到内存中,重启数据库后,都会导致最大自增ID重置 MyISam引擎:MyISAM表会把自增主键的最大ID记录到数据文件里,重启MySQL自增主键的最大ID也不会丢失。mysql8.0版本: 重启数据库后,不会导致最大自增ID重置原因:mysql8.0每次变化时将自增计数器的最大值写入redo log,同时在每次检查点将其写入引擎...原创 2020-08-11 10:59:17 · 2390 阅读 · 0 评论 -
数据库链接池终于搞对了,这次直接从100ms优化到3ms!
本文内容95%译自这篇文章https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing我在研究HikariCP(一个数据库连接池)时无意间在HikariCP的Github wiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽。故在此做译文分享。接下来是正文数据库连接池的配置是开发者们常常搞出坑的地方,在配置数据库连接池时,有几个可以说是和直觉背道而驰的原则需要明确。1万转载 2020-08-07 18:04:31 · 448 阅读 · 0 评论 -
启动MySQL报错:ERROR 2003 (HY000): Can't connect to MySQL server on 'localhost' (10061)
这个错误说明,mysql 服务没有启动解决方案:1、右键我的电脑 找到 管理,在计算机管理中找到【服务】,在服务找到MySQL服务,如果找不到MySQL服务(安装命令为mysqld -install,使用管理员身份执行)2、在服务中找到Mysql服务,双击此服务查看服务的当前状态,如果没有运行,点击【启动】运行服务;3、Mysql服务启动成功后再次连接,就可以正常...原创 2020-02-24 10:27:16 · 1478 阅读 · 0 评论 -
B+Tree 在线 可视化
直接上图,有图有正向,这是旧金山大学做的BPlusTree Visualization 模型来模拟B+Tree链接地址:https://www.cs.usfca.edu/~galles/visualization/BPlusTree.html数据结构可视化:https://www.cs.usfca.edu/~galles/visualization/Algorithms.html...原创 2020-02-20 10:51:51 · 5326 阅读 · 0 评论 -
数据库常用的事务隔离级别都有哪些?都是什么原理?
什么是事务隔离?任何支持事务的数据库,都必须具备四个特性,分别是:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability),也就是我们常说的事务ACID,这样才能保证事务((Transaction)中数据的正确性。而事务的隔离性就是指,多个并发的事务同时访问一个数据库时,一个事务不应该被另一个事务所干扰,每个并发的事务...转载 2019-12-06 19:38:24 · 133 阅读 · 0 评论 -
Mysql8 和mysql5.7 模糊查询 效率 比较 / MySql8 like模糊查询优化
表结构如下:title是有索引mysql5.7:执行sql解析如下:不走索引desc SELECT id,title FROM article WHERE title LIKE '%test%';mysql8:走了索引,虽然是扫面的全表行数,但是查询效率是不加索引的10几倍,下面是对比测试走索引数据查询时间SELECT id,title ...原创 2019-11-28 10:29:31 · 2191 阅读 · 0 评论 -
MySQL中B+Tree索引原理
转自:http://blog.csdn.net/u013235478/article/details/50625677B+树索引是B+树在数据库中的一种实现,是最常见也是数据库中使用最为频繁的一种索引。B+树中的B代表平衡(balance),而不是二叉(binary),因为B+树是从最早的平衡二叉树演化而来的。在讲B+树之前必须先了解二叉查找树、平衡二叉树(AVLTree)和平衡多路查找树(B...转载 2019-03-18 17:58:36 · 153 阅读 · 0 评论 -
mysql in 查询的时候索引不起作用
索引是否起作用,主要取决于字段类型:1. 如果字段类型是字符串,需要给in查询中的 数值与 字符串值 都需要添加 ' ' 引号 ,索引才能起作用。2. 如果字段类型为int,则in查询中的值不需要添加引号,索引也会起叙用。IN的字段,在联合索引中,按以上方法,也会起作用。3.mysql查询优化器认为全表扫描时如果速度大于使用索引,就会不用索引,你可以使用FORCE INDEX(IN...原创 2019-06-06 14:13:37 · 2569 阅读 · 0 评论 -
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY
[Err] 1055 - Expression #1 of ORDER BY clause is not in GROUP BY clause and contains nonaggregated column 'information_schema.PROFILING.SEQ' which is not functionally dependent on columns in GROUP BY ...原创 2019-06-07 21:27:33 · 7090 阅读 · 0 评论 -
MYSQL分页limit速度太慢的优化方法
在mysql中limit可以实现快速分页,但是如果数据到了几百万时我们的limit必须优化才能有效的合理的实现分页了,否则可能卡死你的服务器当一个表数据有几百万的数据的时候成了问题! 如 select * from table limit 0,10 这个没有问题 当 limit 200000,10 的时候数据读取就很慢,可以按照一下方法解决 第一页会很快 PERCONA...原创 2019-06-10 15:22:34 · 11249 阅读 · 4 评论 -
PHP5.6连接mysql8.0 遇到的坑
Thinkphp5.1 报错 php环境5.6 (PHP7连接8.0 貌似木有这个问题)SQLSTATE[HY000] [2054] The server requested authentication method unknown to the client解决办法网上查询得知MySQL 8 默认字符集为utf8mb4,给出的解决方法都是设置MySQL的默认字符集为老版本的utf...原创 2019-07-31 10:52:27 · 5051 阅读 · 1 评论 -
wamp安装多版本Mysql8.0
1、去官网下载Mysql包,我的是64位系统的,请根据自己的系统下载相对应的版本。https://cdn.mysql.com//archives/mysql-8.0/mysql-8.0.11-winx64.zip2、放在自己的wamp环境下的D:\wamp64\bin\mysql 目录下把原始mysql版本目录下的my.ini和wampserver.conf 文件拷贝到mysql8....原创 2019-03-14 22:26:02 · 5114 阅读 · 0 评论