MySQL
文章平均质量分 73
对MySQL的学习
烟火缠过客
差一个我们的距离
展开
-
MySQL重要日志【binlog、redo log、undo log】
MySQL InnoDB 引擎使用redo log(重做日志)保证事务的持久性,使用undo log(回滚日志)来保证事务的原子性。undo log中的历史版本。每个事务读到的数据版本可能是不一样的,在同一个事务中,用户只能看到该事务创建Read View之前已经提交的修改和该事务本身做的修改。原创 2024-05-27 15:50:29 · 756 阅读 · 0 评论 -
建立索引并不一定会走索引
在MySQL中,当EXPLAIN分析显示查询的type列为ALL时,这意味着全表扫描正在发生,即MySQL选择了不使用任何索引来执行查询,而是遍历表中的每一行。即使日期字段已经建立了索引,查询仍然可能不走索引,这通常由以下原因引起。原创 2024-05-06 19:15:59 · 334 阅读 · 0 评论 -
57-SQL中WITH RECURSIVE的用法
WITH RECURSIVE 是 SQL 中的一种高级查询结构,用于执行递归查询。递归查询是一种特殊的查询方式,它能够通过反复应用一个规则或算法,逐步构建出一个结果集,常用于解决层次化或树状数据结构的遍历问题。WITH RECURSIVE 结构通常包含以下几个关键部分:WITH 关键字引入一个或多个 CTE。ECURSIVE 关键字表明至少有一个 CTE 是递归的。CTE 名称(cte_name)用于标识递归查询的临时结果集。原创 2024-04-18 19:09:12 · 1709 阅读 · 1 评论 -
SQL中WITH RECURSIVE的用法
WITH RECURSIVE 是 SQL 中的一种高级查询结构,用于执行递归查询。递归查询是一种特殊的查询方式,它能够通过反复应用一个规则或算法,逐步构建出一个结果集,常用于解决层次化或树状数据结构的遍历问题。WITH RECURSIVE 结构通常包含以下几个关键部分:WITH 关键字引入一个或多个 CTE。ECURSIVE 关键字表明至少有一个 CTE 是递归的。CTE 名称(cte_name)用于标识递归查询的临时结果集。原创 2024-04-18 18:02:48 · 1518 阅读 · 0 评论 -
按时间维度统计次数案例
这里使用了UNIX时间戳和UNIX_TIMESTAMP函数来将日期时间转换为秒数,然后通过FLOOR函数和乘法操作将秒数转换为每5分钟的起始时间戳,最后使用FROM_UNIXTIME函数将时间戳转换回日期时间格式。请注意,你可以根据实际情况修改表名、字段名和日期时间字段名。要按每5分钟维度统计某个字段的个数,可以使用MySQL的日期函数和聚合函数来实现。要按分钟维度统计某个字段的个数,可以使用MySQL的日期函数和聚合函数来实现。要按秒维度统计某个字段的个数,可以使用MySQL的日期函数和聚合函数来实现。原创 2024-02-05 18:15:03 · 550 阅读 · 0 评论 -
MySql8.0对JSON数据的操作简记
在MySQL 8.0中,你可以使用JSON函数来查询JSON数据类型中的某个字段值。以下是一些详细的介绍和示例:首先,确保你的表中的列是JSON类型。假设你有一个名为data的列,其中包含JSON数据。原创 2023-09-26 11:15:49 · 1121 阅读 · 0 评论 -
为什么 MySQL 数据库要用 B+ 树存储索引?
感觉这篇文章太过优秀,值的收藏https://blog.csdn.net/csdnnews/article/details/85822803原创 2019-12-20 17:48:28 · 578 阅读 · 1 评论 -
MySql相关时间处理的函数
时间的间隔时间格式的转换。原创 2022-11-11 16:55:12 · 1085 阅读 · 0 评论 -
MySQL对JSON数据的增删改查
开黑吗?我亚索贼溜,哈塞给前言因为项目需要,存储字段存储成了JSON格式,在项目中是将查询出来的值通过jackson转成相应的bean进行处理的,觉得不够简单方便。MySQL从5.7版本开始就支持JSON格式的数据,操作用起来挺方便的。建表在新建表时字段类型可以直接设置为json类型,比如我们创建一张表:CREATE TABLE `test_user` (`id` IN...原创 2019-04-26 14:23:33 · 8744 阅读 · 7 评论 -
MySQL5.7对json的支持
1.创建带有json字段的表CREATE TABLE `article` ( `id` mediumint(8) unsigned NOT NULL AUTO_INCREMENT, `title` varchar(200) NOT NULL, `tags` json DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB;...原创 2019-04-25 20:31:58 · 1464 阅读 · 1 评论 -
Mysql使用规范-仅限参考
Innodb是以聚集索引的顺序来存储的,对于Innodb来说,二级索引在叶子节点中所保存的是行的主键信息,如果是用二级索引查询数据,在查找到相应的键值后,还需通过主键进行二次查询才能获取我们真实所需要的数据。由于覆盖索引是按键值的顺序存储的,对于IO密集型的范围查找来说,对比随机从磁盘读取每一行的数据IO要少的多,因此利用覆盖索引在访问时也可以把磁盘的随机读取的IO转变成索引查找的顺序IO。而在覆盖索引中,二级索引的键值中可以获取所有的数据,避免了对主键的二次查询 ,减少了IO操作,提升了查询效率。原创 2023-01-31 11:02:59 · 436 阅读 · 0 评论 -
数据库常见知识总结
1.事务的ACID,原子性,一致性,隔离性,持久性原子性:指事务所有包含的操作要么全部成功,要么全部失败回滚,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响。 一致性:事务开始前和结束后,数据库的完整性约束没有被破坏。比如A向B转账,不可能A扣了钱,B却没有收到 隔离性:当多个用户并发访问数据库时,比如操作同一张表时,数据库为每一个用户开启事务,不能被...原创 2019-12-24 16:20:39 · 856 阅读 · 0 评论 -
MVCC多版本并发控制
了解几个概念读锁:也叫共享锁、S锁,若事务T对数据对象A加上S锁,则事务T可以读A但不能修改A,其他事务只能再对A加S锁,而不能加X锁,直到T释放A上的S 锁。这保证了其他事务可以读A,但在T释放A上的S锁之前不能对A做任何修改。写锁:又称排他锁、X锁。若事务T对数据对象A加上X锁,事务T可以读A也可以修改A,其他事务不能再对A加任何锁,直到T释放A上的锁。这保证了其他事务在T释放A上的锁...原创 2019-12-24 13:25:59 · 654 阅读 · 0 评论 -
数据库性能优化
SQL优化尽量避免使用select *只查询一条记录时使用limit1使用连接查询代替子查询尽量使用一些能通过索引查询的关键字表结构优化尽量使用数字类型字段,提高对比效率长度不变且对查询速度要求高的数据可以考虑使用char,否则使用varchar表中字段过多时可以适当的进行垂直拆分,将部分字段移到另外一张表格中表中数据量过大可以适当的进行水平分割,将部分数据移...原创 2019-11-13 21:22:41 · 276 阅读 · 0 评论 -
MYSQL主从数据库数据同步原理
二、什么是MySQL主从复制MySQL主从复制是其最重要的功能之一。主从复制是指一台服务器充当主数据库服务器,另一台或多台服务器充当从数据库服务器,主服务器中的数据自动复制到从服务器之中。对于多级复制,数据库服务器即可充当主机,也可充当从机。MySQL主从复制的基础是主服务器对数据库修改记录二进制日志,从服务器通过主服务器的二进制日志自动执行更新。三、MySQL主从复制的类型1.基于语...原创 2019-10-31 20:11:01 · 635 阅读 · 0 评论 -
MySQL事务
MySQL 事务MySQL 事务主要用于处理操作量大,复杂度高的数据。比如说,在人员管理系统中,你删除一个人员,你即需要删除人员的基本资料,也要删除和该人员相关的信息,如信箱,文章等等,这样,这些数据库操作语句就构成一个事务! 1.在 MySQL 中只有使用了 Innodb 数据库引擎的数据库或表才支持事务。 2.事务处理可以用来维护数据库的完整性,保证成批的 SQL 语...原创 2019-10-22 17:13:58 · 293 阅读 · 0 评论 -
JDBC动态拼接sql语句
public class Demo1 { private static String url = "jdbc:mysql://127.0.0.1:33056/test"; private static String username = "root"; private static String password = "123456"; ...原创 2019-09-25 15:12:38 · 4550 阅读 · 2 评论 -
MySQL批量更新操作
public void reviseOrderAmount(NamedParameterJdbcTemplate namedJdbcTemplate, ReportTradingKu tradingKu) { //查询语句 String selectSql = "select t1.merchant_bn,t1.order_id, t1.total_amount...原创 2019-09-09 16:15:03 · 419 阅读 · 1 评论 -
NamedParameterJdbcTemplate+JDBC+批量操作+事务(速度相比于NamedParameterJdbcTemplate批量操作快)
1.只是用NamedParameterJdbcTemplate做批量操作当数据量比较大的时候,其速度并不是太让人满意,我做了一次10万数据的插入就用了一天多的时间,所以才想办法解决看看能不能再提高点速度1.使用NamedParameterJdbcTemplate循环遍历插入数据,这种速度还行,六万数据在10几分钟就搞定 @Transactional(rollbackFor = Excep...原创 2019-05-17 13:38:57 · 6307 阅读 · 1 评论