
MySQL
文章平均质量分 65
MySQL
你那是什么调调
股份制商业银行,运维开发
展开
-
MySql 中 on duplicate key update 用法
MySql 中 on duplicate key update用法。转载 2023-12-18 14:46:07 · 62 阅读 · 0 评论 -
MySQL 日志文件
不仅如此,在对redo log写入时有两个阶段的提交,一是binlog写入之前prepare状态的写入,二是binlog写入之后commit状态的写入。其实写redo log的时候,也会有buffer,是先写buffer,再真正落到磁盘中的。在数据修改的时候,不仅记录了redo log,还记录undo log,如果因为某些原因导致事务失败或回滚了,可以用undo log进行回滚。因为undo log存储着修改之前的数据,相当于一个前版本,MVCC实现的是读写不阻塞,读的时候只要返回前一个版本的数据就行了。原创 2023-03-07 08:59:18 · 3757 阅读 · 0 评论 -
MySQL 锁
事务在从数据库中取数据时,会将该数据的版本也取出来(v1),当事务对数据变动完毕想要将其更新到表中时,会将之前取出的版本v1与数据中最新的版本v2相对比,如果v1=v2,那么说明在数据变动期间,没有其他事务对数据进行修改,此时,就允许事务对表中的数据进行修改,并且修改时version会加1,以此来表明数据已被变动。也就是说,无论是行级或是表级,如果对某数据上了共享锁 ,允许其他事务也加共享锁,共享锁和共享锁不互斥),但是不能写,也就是。间隙指的是两个记录之间逻辑上尚未填入数据的部分,是一个左开右开空间。原创 2023-03-02 11:01:02 · 3900 阅读 · 0 评论 -
MySQL 索引
假设用数组存储索引,比如下面有一个排序的数组,如果要找出数字 3,最简单办法是遍历查询,时间复杂度是 O(n),查询效率不高。在InnoDB存储引擎里,利用辅助索引查询,先通过辅助索引找到主键索引的键值,再通过主键值查出主键索引里面没有符合要求的数据,它比基于主键索引的查询多扫描了一棵索引树,这个过程就叫回表。二叉查找树:一个节点的左子树的所有节点都小于这个节点,右子树的所有节点都大于这个节点,这样我们在查询数据时,不需要计算中间节点的位置了,只需将查找的数据与节点的数据进行比较。原创 2023-02-28 17:29:26 · 470 阅读 · 0 评论 -
MySQL 事务
对于Read Committed和Repeatable Read隔离级别来说,都需要读取已经提交的事务所修改的记录,也就是说如果版本链中某个版本的修改没有提交,那么该版本的记录时不能被读取的。如果某个版本的数据对当前事务不可见的话,那就顺着版本链找到下一个版本的数据,继续按照上边的步骤判断可见性,依此类推,直到版本链中的最后一个版本。串行化的情况下,对于同一行事务,写会加写锁,读会加读锁。与不可重复读的区别是:在幻读中,已经读取的数据不会改变,只是与以前相比,会有更多的数据满足查询条件。原创 2023-03-08 14:06:44 · 356 阅读 · 0 评论 -
MySQL 主从复制
MySQL异步复制并不关心从库是否已经接收并处理,这样就会有一个问题,主如果crash掉了,此时主上已经提交的事务可能并没有传到从库上。相对于异步复制,半同步复制提高了数据的安全性,同时它也造成了一定程度的延迟,这个延迟最少是一个TCP/IP往返的时间。半同步复制介于异步复制和全同步复制之间,主库在执行完客户端提交的事务后不是立刻返回给客户端,而是等待至少一个从库接收到并写到relaylog中才返回给客户端。对于需要强一致的场景,将其读请求都操作主库,这样「读写都在主库」,就没有不一致的情况。原创 2023-03-02 16:42:41 · 448 阅读 · 0 评论 -
MySQL 分库分表
缺点:分布不均匀,假如按照 1000 万来进行分表,有可能某个分段实际存储的数据量只有 1000 条,而另外一个分段实际存储的数据量有 900 万条。解决方案就是在业务代码中进行关联,也就是先把一个表的数据查出来,然后通过得到的结果再去查另一张表,然后利用代码来关联得到最终的结果。选取有序的数据列 (例如,整形、时间戳等) 作为路由的条件,不同分段分散到不同的数据库表中。数据的迁移,容量如何规划,未来是否可能再次需要扩容,等等,都是需要考虑的问题。这种方式实现起来稍微比较复杂,不过也是可以接受的。原创 2023-03-03 11:12:10 · 937 阅读 · 0 评论 -
SQL存储过程
文章目录建表新增字段插入数据建表DELIMITER ;; DROP PROCEDURE IF EXISTS UPPRDE;; BEGIN CREATE TABLE IF NOT EXISTS table_name ( 'IID' decimal(12,0) NOT NULL COMMENT '' ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT=''; END;;DELIMITER ;CALL UPPRDE();新增字段DELIMIT原创 2022-03-11 16:44:14 · 175 阅读 · 0 评论 -
JDBC小结
文章目录1.查询2.插入3.更新4.删除5.事务6.批处理1.查询import java.sql.Connection;import java.sql.DriverManager;import java.sql.PreparedStatement;import java.sql.ResultSet;import java.sql.SQLException;import java.sql.Statement;public class A { public static void ma原创 2022-04-05 20:30:02 · 213 阅读 · 0 评论 -
SQL:数据按多列去重
【代码】SQL:数据按多列去重。原创 2023-05-26 16:41:49 · 1170 阅读 · 0 评论 -
SQL:分组查询并取出前N名
mysql中分组查询并取出前几名原创 2023-02-23 13:56:46 · 587 阅读 · 0 评论