举例说明SQL语言中有哪些语句分别属于模式DDL、子模式DDL和内模式DDL?

举例说明SQL语言中有哪些语句分别属于模式DDL、子模式DDL和内模式DDL?,第1张

举例说明SQL语言中有哪些语句分别属于模式DDL、子模式DDL和内模式DDL

在SQL语言中,DDL(数据定义语言)用于定义数据库中的表、视图、索引等对象,包括模式DDL、子模式DDL和内模式DDL。

1. 模式DDL:用于定义整个数据库的结构,包括数据库名称、表空间、用户、角色等。例如:

CREATE DATABASE my_database

2. 子模式DDL:用于定义一个用户或一组用户的数据结构,包括表、视图、索引等。例如:

CREATE TABLE my_table (

id INT PRIMARY KEY,

name VARCHAR(50)

)

3. 内模式DDL:用于定义数据库管理系统(DBMS)内部的数据结构,如数据字典、系统表等。例如:

CREATE TABLE sys_tables (

table_name VARCHAR(50),

column_name VARCHAR(50),

data_type VARCHAR(50)

)

谈到MySQL数据库主从同步延迟原理,得从mysql的数据库主从复制原理说起,mysql的主从复制都是单线程的 *** 作,主库对所有DDL和DML产生binlog,binlog是顺序写,所以效率很高,slave的Slave_IO_Running线程到主库取日志,效率很比较高,下一步,问题来了,slave的Slave_SQL_Running线程将主库的DDL和DML *** 作在slave实施。DML和DDL的IO *** 作是随即的,不是顺序的,成本高很多,还可能可slave上的其他查询产生lock争用,由于Slave_SQL_Running也是单线程的,所以一个DDL卡主了,需要执行10分钟,那么所有之后的DDL会等待这个DDL执行完才会继续执行,这就导致了延时。有朋友会问:“主库上那个相同的DDL也需要执行10分,为什么slave会延时?”,答案是master可以并发,Slave_SQL_Running线程却不可以。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/sjk/6742109.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-27
下一篇 2023-03-27

发表评论

登录后才能评论

评论列表(0条)

保存