概述
在早期的 MySQL 版本中,DDL 操作(如创建索引等)通常都需要对数据表加锁,操作过程中 DML 操作都会被阻塞,影响正常业务。MySQL 5.6 和 MariaDB 10.0 开始支持 Online DDL,可以在执行 DDL 操作的同时,不影响 DML 的正常执行,线上直接执行 DDL 操作对用户基本无感知(部分操作对性能有影响)。
2024年04月24日
在早期的 MySQL 版本中,DDL 操作(如创建索引等)通常都需要对数据表加锁,操作过程中 DML 操作都会被阻塞,影响正常业务。MySQL 5.6 和 MariaDB 10.0 开始支持 Online DDL,可以在执行 DDL 操作的同时,不影响 DML 的正常执行,线上直接执行 DDL 操作对用户基本无感知(部分操作对性能有影响)。
2024年04月24日
数据库
查询数据库:show databases;
创建数据库:create database 库名;
删除数据库:drop database 库名
表
创建表:create table 表名(字段名 数据类型【属性】【索引】)
2024年04月24日
作为DBA,我们也常常会碰到这样的需求:需要在不影响线上业务的情况下给表添加一个字段或索引。如果是一张只有几百或几千条记录的小表,这样的需求是非常容易解决的。但如果所管理的表数据量已经上亿、而且应用与数据库交互非常频繁,不允许停机窗口的出现,这样的需求又该如何满足?
大多数的alter table操作都会涉及lock-->copy to new table-->rename-->unlock的过程,锁表时间会很长,而且alter table 的process不可被kill,一旦执行就不可回退。
2024年04月24日
1. 安装 msi版本
2. 添加删除数据库(DB)
`create database database_name;` 建立`database_name`数据库
`show databases;` 显示当前所有的数据库
`drop database database_name;` 删除database_name数据库
`use database_name;`使用`database_name`数据库
2024年04月24日
序
本文主要研究一下rocketmq-mysql的ColumnParser
rocketmq-externals/rocketmq-mysql/src/main/java/org/apache/rocketmq/mysql/schema/column/ColumnParser.java
2024年04月24日
记得有一天快下班的时候,一位开发同事找到我说,需要对一个表做变更,数据量据说有上千万,而当时是使用的MySQL版本是5.5,这可如何是好,对于在线业务要求高的情况下,这种需求真是让人头疼。
而在早期的版本中,这种问题就更让人无语了。在Oracle中这个问题解决的较早,当然在很多技术实现细节上,Oracle和MySQL还是蛮大的差距。Oracle中有在线重定义的方案物化视图prebuilt和在线重定义 (r10笔记第25天),而且本身对于一些DDL的操作代价要比MySQL低。不过在碰到添加字段且加默认值的情况,在Exadata上跑性能测试,问题依旧是很棘手。以至于在有些业务中,对某些核心的大表,有些公司是使用视图来达到这种动态的字段扩展而非直接添加字段。这,应该算是一场技术上的硬仗。
2024年04月24日
在5.6版本以前,数据库在执行DDL操作时,会锁表,进而影响线上业务。为了改善情况,mysql后面逐渐引入Online DDL功能并逐步增强其功能,其主要作用是在生产环境中,有业务处理情况下,也可以执行DDL操作且不阻塞其他DML操作。
2024年04月24日
一、前言
近几个月项目中数据库开始分库了,把一个原本60多张表的数据库分成了6个部分,每个部分有自己业务之内的表,整个数据库只是物理分开,逻辑依然是链接的,通过mycat这个数据库中间件对整个数据库进行路由转发。但是分库后随之而来的问题之一就是跨库join,可以说网上的解决方案已经烂大街了。但是小编还是觉得有必要总结分析一下。
2024年04月24日
在一些互联网项目中,由于早期的数据库架构缺乏有效合理的设计,后期随着表数据量的增加就不可避免的会进行表结构变更。在修改表结构时,如果我们操作不当会引起重大事故。
2024年04月24日
添加主键约束:
alter table 表名 add constraint 主键 (形如:PK_表名) primary key 表名(主键字段);
添加外键约束:
alter table 从表 add constraint 外键(形如:FK_从表_主表) foreign key 从表(外键字段) references 主表(主键字段);