当前位置: 首页 > news >正文

wordpress 数据库seo网络营销推广公司深圳

wordpress 数据库,seo网络营销推广公司深圳,规模以上工业企业是指,幼儿园网站模板怎么做本文首发于个人微信公众号《andyqian》,期待你的关注!前言在上一篇文章中《浅谈MySQL Online DDL (上)》中,我们谈到了MySQL Online DDL的由来,还介绍了聚簇索引与二级索引的区别。今天,我们继续谈谈MySQL Online DDL。…

本文首发于个人微信公众号《andyqian》,期待你的关注!

前言

在上一篇文章中《浅谈MySQL Online DDL (上)》中,我们谈到了MySQL Online DDL的由来,还介绍了聚簇索引与二级索引的区别。今天,我们继续谈谈MySQL Online DDL。

Online DDL优点

在上篇文章中,我们知道了『快速索引创建』的优点,对于MySQL 5.7版本来说,这也就成为了Online DDL的优点了,而且增强了不少。优点如下:

不影响生产环境数据库运行,在DDL操作时,不影响生产上的查询,以及DML操作。

减少在创建,修改二级索引时,带来没必要的数据复制,临时表创建时的磁盘与IO开销。

能够人为通过Lock语句平衡性能与开销。

Online DDL语法

Online DDL语法上,其实并没有特殊的之处的。我们知道Online DDL这个概念在MySQL5.6首次出现,虽然在语法上没有特殊的之处,但官方为我们在原来的DDL语法上添加了一些控制性能与并发的属性,这里以alter为例(如下所示):

演示MySQL版本: 5.7.20

alter table t_base_user modify telephone varchar(50),lock=none ;

上面这条语句非常简单,就是修改 t_base_user 表中 telephone字段属性。

其中 lock=none 是我们比较陌生的,这个就是MySQL5.6中用来控制性能的属性,需要注意的是,在MySQL5.6之前的版本中,这样的语法是不支持的。执行时会直接报语法不支持的错误。那 lock=none 代表什么意思呢?

锁类型

Online DDL语句和DDL语句是一样的,执行时同样的会加锁,(这里就统一说成锁吧,MySQL锁是一个比较大的话题,下次详细说明)。

官方给我们提供了几个可选项:

LOCK=EXCLUSIVE : 表示独占锁,DDL语句执行期间会阻塞该表的所有请求。

LOCK=SHARED:共享锁,DDL语句执行期间会阻塞除查询外的所有DML操作,如: insert,update等。

LOCK=NONE: 允许所有查询以及DML操作。

LOCK=DEFAULT 默认级别,MySQL尽可能允许最大的并发操作。

当我们不显示指定时,默认就为LOCK=DEFAULT类型。

需要注意的是:

不是所有的DDL操作LOCK类型都可以指定为NONE的。如果DDL操作的类型,不能以请求的锁定类型执行,则会执行失败。

rows affected

在执行有些DDL语句时(修改字段类型),其实是有风险的,那怎么避免风险呢?这个时候就要通过执rows affected类分析了。

如下所示:

mysql> alter table t_base_user modify telephone varchar(50),lock=none ;

Query OK, 0 rows affected (0.03 sec)

Records: 0 Duplicates: 0 Warnings: 0

这里显示我们修改t_base_user表telephone字段会非常快,而且不会重建表。这是由于演示数据比较少导致的。当生产数据比较多时,是会重建表的。

下面给出了一些参考选项:

更改列的默认值(超快,完全不影响表数据):

Query OK, 0 rows affected (0.07 sec)

添加一个索引(需要时间,但是0 rows affected显示表格不被复制):

Query OK, 0 rows affected (21.42 sec)

更改列的数据类型(需要大量的时间,并且需要重建表的所有行):

Query OK, 1671168 rows affected (1 min 35.54 sec)

我们可以通过上述的执行结果,查看该语句是否复制记录,重建整个表格(我们上篇说过,如果重建,成本会非常高,而且还会影响线上DML)等。显然,直接在生产上运行该语句后,再看结果来分析。已经没有意义了,我们可以通过在测试环境中来看。具体步骤如下:

复制需要ddl的生产表结构到测试环境中。

添加部分数据到该表中。

执行ddl操作。

查看rows affected 值是否为0,非0时,意味着操作需要重建整个表,这时候就需要重新指定方案,如:在停机时进行操作,或业务低估时进行操作。

今日命令

命令:

SHOW CREATE {DATABASE | SCHEMA} [IF NOT EXISTS] db_name

作用:显示指定数据库的创建语句。

例子:

mysql> show create database andyqian\G

*************************** 1. row ***************************

Database: andyqian

Create Database: CREATE DATABASE `andyqian` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */

1 row in set (0.00 sec)

其中:

Database 表示数据库名。

Create Database 表示创建数据库语句。

这里需要注意的是:

show create database andyqian\G

show create schema andyqian\G

上述两个语句的,执行结果是一样的。

注意:

andyqian为指定的数据库名,请替换至自己需要显示的数据库名。

在 Navicat 第三方工具时运行时,不需要添加\G。命令如下即可:

show create schema andyqian;

小结

在这一篇中,我们简单了介绍了MySQL Online DDL的语法,以及锁类型等等。其实Online DDL也是有条件限制的,以及Online DDL语句的实现细节,我们在下一篇文章中继续说。尽请期待!

最后:周五了,马上就周末了,准备好周末怎么过了吗?

推荐阅读:

http://www.lbrq.cn/news/2557207.html

相关文章:

  • 微信微信seo排名点击
  • 恩施网站建设百度seo详解
  • 课程培训网站建设外贸公司一般怎么找客户
  • 徐州网站建设制作公司海外市场推广方案
  • 北京市规划网站免费b站推广网站详情
  • 山东网站营销推广费用百度推广没有一点效果
  • 太原站还建综合楼2024年新冠疫情最新消息
  • 织梦cms做视频网站全网品牌推广公司
  • 洛阳网站设计哪家专业夫唯seo视频教程
  • 微信微网站建设平台网站可以自己做吗
  • 备案 网站软文范例大全200字
  • 青岛网站制作企业拼多多关键词优化步骤
  • 网站安全制度体系的建设情况成人职业培训机构
  • 建设外卖网站规划书百度地图导航网页版
  • 网站第三方评价如何做合肥百度快照优化排名
  • 做网站的软件帝国成人短期培训学校
  • 网站建设分类百度seo排名优化公司推荐
  • 服务器做网站宁德市人社局官网
  • 中核二二公司真实情况潍坊关键词优化平台
  • 企业网站建设需要许可证吗设计师网站
  • 重庆网站建站建设免费滨州网站seo
  • 韶关网站建设价格社会新闻最新消息
  • 不用服务器做视频网站吗seo外包服务专家
  • 网站域名在哪里看怎么做一个属于自己的网站
  • flash网站做seo优化好不好aso优化重要吗
  • 学校建设网站目标google国外入口
  • 誉重网站建设公司seo外包方案
  • vps被攻击网站打不开ping值高灰色广告投放平台
  • 北京网站制作南昌长春最专业的seo公司
  • 网页设计一个多少工资移动端关键词排名优化
  • C语言:20250801学习(构造类型)
  • Leetcode 10 java
  • 因为想开发新项目了~~要给老Python项目整个虚拟环境
  • 2025年7月31日
  • 大模型流式长链接场景下 k8s 优雅退出 JAVA
  • 【ESP32设备通信】-LAN8720与ESP32集成