MySQL
文章平均质量分 54
琪小新
DBA一枚
展开
-
在MySQL 8.4 LTS 版本中哪些参数默认值发生变化?
MySQL 8.4 LTS 版本于美国时间 2024 年 4 月 30 日正式发布,是MySQL 的第一个 LTS (Long Term Support)版本。它主要集中在功能淘汰、参数更新和 bug 修复等方面。原创 2024-05-04 17:26:19 · 682 阅读 · 0 评论 -
MySQL alter table...,是否有更明智的方式?
在上篇文章MySQL的字段扩容中,我们提到了一些情况下MySQL可能会重建表,所以为了避免不可预知的情况出现,我们建议每次修改时指定算法。那你肯定会产生疑问:”最近的版本不是加字段默认instant吗,只修改元数据,不会重建表,在秒级就可以完成啊“。比如我们继续加63个instant字段(刚才已经加了一个字段。包括其他字段修改,如果期待可预期的结果出现,最好加上。算法这把平衡木让你从容走天桥。”一张表最多有64个instant列“。字段了,去掉后可以增加成功。然后再执行下面的脚本。因此,我们无法再增加。原创 2024-03-27 08:54:32 · 104 阅读 · 0 评论 -
数据库设计 - 分槽计数器模式
传统的计数方法,如直接在数据库中更新一个计数器,虽然简单直接,但在面对成千上万的并发请求时,却容易成为性能瓶颈。这样做可以有效地分散数据库的写入操作,减少对单一数据行的频繁访问,从而提高数据库的性能和并发处理能力。在实际应用分槽计数器模式时,我们需要根据具体业务的特点和数据量来调整槽位的数量和分布,以达到最佳的性能平衡。此外,对于数据的最终汇总和分析,也需要考虑合适的策略来确保效率和准确性。它不仅优化了数据库的性能,减少了锁争用和死锁的风险,还提供了一种灵活且高效的方式来处理大量数据的实时更新。原创 2024-03-21 17:45:25 · 128 阅读 · 1 评论 -
MySQL内幕:XA长事务是如何垄断IX锁的?
通过以上分析和解决步骤,我们可以更深入地理解MySQL内部XA事务的执行机制,并掌握锁分析和解锁的方法,确保系统的稳定高效运行。预防此类问题的根本在于避免XA事务在准备阶段后遗留,可通过设置适当的xa_commit_timeout参数或定期检查并处理,保证事务要么提交要么回滚。服务由于某一原因突然宕掉,尽管后续你重启了数据库服务,但是该事务始终没有提交或者回滚,这才导致该事务对应的表一直被加了元数据锁。果不其然,你发现有个active的事务一直处于prepared阶段,其对应的。节点也存在同样的情况;原创 2024-03-09 16:08:36 · 337 阅读 · 0 评论 -
在MySQL表中查询重复记录
有时候由于业务原因或者其他原因,我们的表中产生了部分重复记录,我们需要只保留一条数据,删除重复的部分。那么如果我们不使用窗口函数该怎么实现这个需求呢?今天我们就一起来看看。🎃 首先,我们创建如下的表。的记录,即为重复记录。原创 2024-03-09 09:37:20 · 368 阅读 · 0 评论 -
MySQL没有主键情况下少量重复记录删除
MySQL没有主键情况下少量重复记录删除琪小新2021/08/05proceduredrop procedure if exists p_delete_repeat_records;delimiter //create procedure p_delete_repeat_records(p_table_name varchar(120), p_group_field varchar(120), p_date_f原创 2021-08-05 09:27:38 · 386 阅读 · 0 评论 -
MySQL之Merge引擎
MySQL之Merge引擎MySQL可以通过Merge引擎将相同的MyISAM表逻辑组织起来MyISAM引擎表创建表 in_num_m1 和 in_num_m2,并向其中插入示例数据CREATE TABLE `in_num_m1`( `num_id` int(11) NOT NULL DEFAULT '0', `num_val` int(11) DEFAULT NULL) ENGINE = MyISAM;CREATE TABLE `in_num_m原创 2021-03-18 13:35:56 · 307 阅读 · 0 评论 -
MySQL之last_insert_id()
MySQL之last_insert_id()在向数据库具有自增列的表中插入一行之后,会生成一个AUTO_INCREMENT值,可以通过SELECT LAST_INSERT_ID()得到这个值,返回BIGINT UNSIGNED (64-bit) 类型,注意是生成(generate)AUTO_INCREMENT值,如果是插入时自增字段的值是插入的而不是生成的,则不会。模拟过程现创建如下两张表create table in_num( num_id int primary key auto_原创 2021-03-15 13:37:22 · 4594 阅读 · 1 评论