sql
文章平均质量分 84
lang20150928
stay hungry stay foolish
展开
-
oracle数据库用户设置默认的表空间 索引表空间
在Oracle数据库中,用户默认的表空间用于存储用户创建的表的数据部分,而索引通常可以存储在不同的表空间以实现更好的管理或性能优化。设置用户的默认表空间与设置索引的默认表空间是两个不同的操作。如果需要在应用层面保证所有新创建的索引都位于特定的表空间,可以在创建索引的SQL脚本中统一指定这个表空间名称,或者在应用程序中进行控制,确保每次创建索引时都设置了相应的表空间参数。Oracle并不直接支持为用户设置一个默认的索引表空间,因为每次创建索引时都可以明确指定它的表空间。但是,在创建表的时候,可以通过。原创 2024-01-08 09:42:25 · 691 阅读 · 0 评论 -
ORA-44203: timeout waiting for lock on cursor
这样的错误,虽然其根源是与游标相关的锁超时,但直接查询特定的游标锁对象在Oracle数据库中并不直观,因为游标是由SQL语句动态生成,并且其信息存储在内部数据结构中。另外,还可以通过AWR报告、ASH(Active Session History)报告或者DBA_HIST_ACTIVE_SESS_HISTORY表来分析历史会话活动情况,找出可能导致游标锁争用的原因。由于游标锁通常与长时间运行的事务或并发访问共享资源相关,所以分析时需要关注长时间运行的事务、死锁、并行DML操作等。原创 2024-01-05 16:25:24 · 621 阅读 · 0 评论 -
Mysql锁源查询
2.被阻塞的事务mysql> select a.trx_id,a.trx_state,a.trx_mysql_thread_id,a.trx_query from information_schema.INNODB_TRX a where trx_state='LOCK WAIT' \G*************************** 1. row *************************** trx_id: 27921 #事务ID号原创 2022-04-11 17:54:38 · 801 阅读 · 0 评论 -
处理Mysql元数据锁的问题
show engine innodb status;SELECT sql_kill_blocking_connectionFROM sys.schema_table_lock_waitsWHERE blocking_lock_type <> 'SHARED_UPGRADABLE' AND (waiting_query LIKE 'alter%' OR waiting_query LIKE 'create%' OR waiting_query LIKE 'drop%' OR原创 2022-04-01 14:18:48 · 791 阅读 · 0 评论 -
MySQL常见脚本语句格式参考
表整体(TABLE )操作针对数据库的表进行新增操作,考虑到脚本可重复执行,有以下两种方案使用TRYADDTABLE存储过程CALL TRYADDTABLE('ACT_GE_PROPERTY', 'CREATE TABLE ACT_GE_PROPERTY ( NAME_ varchar(128) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, VALUE_ varchar(600) CHARACTER SET utf8 COLLA原创 2022-03-15 20:59:15 · 1238 阅读 · 1 评论 -
undo 日志
MySQL学习系列事务回滚的需求我们说过事务需要保证原子性, 也就是事务中的操作要么全部完成, 要么什么也不做。 但是偏偏有时候事务执行到一半会出现一些情况, 比如:情况一: 事务执行过程中可能遇到各种错误, 比如服务器本身的错误, 操作系统错误, 甚至是突然断电导致的错误。情况二: 程序员可以在事务执行过程中手动输入 ROLLBACK 语句结束当前的事务的执行这两种情况都会导致事务执行到一半就结束, 但是事务执行过程中可能已经修改了很多东西, 为了保证事务的原子性, 我们需要把东西改回原先的.原创 2022-01-31 16:25:52 · 2095 阅读 · 0 评论 -
redo 日志
MySQL学习系列redo 日志的作用redo 日志格式Mini-Transactionredo 日志的写入过程Log Sequence Numberinnodb_flush_log_at_trx_commit 的用法崩溃后的恢复原创 2022-01-19 21:12:49 · 283 阅读 · 0 评论 -
InnoDB 的 Buffer Pool
MySQL学习系列缓存的重要性我们知道, 对于使用 InnoDB 作为存储引擎的表来说, 不管是用于存储用户数据的索引(包括聚簇索引和二级索引) , 还是各种系统数据, 都是以页的形式存放在表空间中的, 而所谓的表空间只不过是 InnoDB 对文件系统上一个或几个实际文件的抽象, 也就是说我们的数据说到底还是存储在磁盘上的。但是磁盘的速度慢, 所以 InnoDB 存储引擎在处理客户端的请求时, 当需要访问某个页的数据时, 就会把完整的页的数据全部加载到内存中, 也就是说即使我们只需要访问一个页的一.原创 2022-01-19 21:09:45 · 409 阅读 · 0 评论 -
InnoDB 的表空间
MySQL学习系列表空间是一个抽象的概念, 对于系统表空间来说, 对应着文件系统中一个或多个实际文件; 对于每个独立表空间来说, 对应着文件系统中一个名为表名.ibd的实际文件。 大家可以把表空间想象成被切分为许许多多个页的池子, 当我们想为某个表插入一条记录的时候, 就从池子中捞出一个对应的页来把数据写进去。再回忆一次, InnoDB 是以页为单位管理存储空间的, 我们的聚簇索引(也就是完整的表数据) 和其他的二级索引都是以 B+树的形式保存到表空间的, 而B+树的节点就是数据页。任何类型的页都.原创 2022-01-19 21:00:56 · 315 阅读 · 0 评论 -
InnoDB 记录存储结构和索引页结构
MySQL学习系列InnoDB 是一个将表中的数据存储到磁盘上的存储引擎, 所以即使关机后重启我们的数据还是存在的。 而真正处理数据的过程是发生在内存中的, 所以需要把磁盘中的数据加载到内存中, 如果是处理写入或修改请求的话, 还需要把内存中的内容刷新到磁盘上。 而我们知道读写磁盘的速度非常慢, 和内存读写差了几个数量级, 所以当我们想从表中获取某些记录时, InnoDB 存储引擎需要一条一条的把记录从磁盘上读出来么?InnoDB 采取的方式是: 将数据划分为若干个页, 以页作为磁盘和内存之间交互的基.原创 2022-01-19 20:31:56 · 585 阅读 · 0 评论 -
通过 show profile 分析 SQL
MySQL学习系列 通过上面的描述可知, 当我们通过应用程序访问 MySQL 服务时, 有时候性能不一定全部卡在语句的执行上。 当然通过慢查询日志定位那些执行效率较低的SQL 语句时候我们常用的手段, 但是:一、 慢查询日志在查询结束以后才记录, 在应用反映执行效率出现问题的时候查询未必执行完成;二、 有时候问题的产生不一定是语句的执行, 有可能是其他原因导致的。 慢查询日志并不能定位问题。 show processlistmysql> show processlist;+----.原创 2022-01-17 20:25:19 · 507 阅读 · 0 评论 -
全局考虑性能优化
MySQL学习系列 为什么查询速度会慢在尝试编写快速的查询之前, 需要清楚一点, 真正重要是响应时间。 如果把查询看作是一个任务, 那么它由一系列子任务组成, 每个子任务都会消耗一定的时间。 如果要优化查询, 实际上要优化其子任务, 要么消除其中一些子任务, 要么减少子任务的执行次数, 要么让子任务运行得更快。MySQL 查询的生命周期大致可以按照顺序来看:从客户端, 到服务器, 然后在服务器上进行解析, 生成执行计划, 执行, 并返回结果给客户端。 其中“执行”可以认为是整个生命周期中最重要的.原创 2022-01-17 20:00:43 · 368 阅读 · 0 评论 -
子查询在 MySQL 中是怎么执行的
MySQL学习系列想象子查询的执行方式想象中子查询的执行方式是这样的:如果该子查询是不相关子查询, 比如下边这个查询:SELECT * FROM s1 WHERE order_note IN (SELECT order_note FROM s2);先单独执行(SELECT order_note FROM s2)这个子查询。 然后在将上一步子查询得到的结果当作外层查询的参数再执行外层查询 SELECT * FROM s1 WHERE order_note IN (…)。如果该子查询是相关子查.原创 2022-01-16 21:28:30 · 790 阅读 · 0 评论 -
子查询语法
MySQL学习系列在一个查询语句 A 里的某个位置也可以有另一个查询语句 B, 这个出现在 A语句的某个位置中的查询 B 就被称为子查询, A 也被称之为外层查询。 子查询可以在一个外层查询的各种位置出现, 比如:SELECT 子句中也就是我们平时说的查询列表中, 比如这样:SELECT (SELECT m1 FROM e1 LIMIT 1);其中的(SELECT m1 FROM e1 LIMIT 1)就是子查询。FROM 子句中比如:SELECT m, n FROM (SEL.原创 2022-01-16 17:15:15 · 434 阅读 · 0 评论 -
MySQL 的查询重写规则
MySQL学习系列 对于一些执行起来十分耗费性能的语句, MySQL 还是依据一些规则, 竭尽全力的把这个很糟糕的语句转换成某种可以比较高效执行的形式, 这个过程也可以被称作查询重写。条件化简我们编写的查询语句的搜索条件本质上是一个表达式, 这些表达式可能比较繁杂, 或者不能高效的执行, MySQL 的查询优化器会为我们简化这些表达式。移除不必要的括号有时候表达式里有许多无用的括号, 比如这样:((a = 5 AND b = c) OR ((a > c) AND (c <.原创 2022-01-16 14:37:40 · 137 阅读 · 0 评论 -
InnoDB 中的统计数据
MySQL学习系列我们前边唠叨查询成本的时候经常用到一些统计数据, 比如通过 SHOW TABLE STATUS 可以看到关于表的统计数据, 通过 SHOW INDEX 可以看到关于索引的统计数据, 那么这些统计数据是怎么来的呢? 它们是以什么方式收集的呢? 统计数据存储方式InnoDB 提供了两种存储统计数据的方式:永久性的统计数据, 这种统计数据存储在磁盘上, 也就是服务器重启之后这些统计数据还在。非永久性的统计数据, 这种统计数据存储在内存中, 当服务器关闭时这些这些统计数据就都被清.原创 2022-01-16 14:06:03 · 241 阅读 · 0 评论 -
调节成本常数
MySQL学习系列 我们前边已经介绍了两个成本常数:读取一个页面花费的成本默认是 1.0检测一条记录是否符合搜索条件的成本默认是 0.2其实除了这两个成本常数, MySQL 还支持很多, 它们被存储到了 MySQL 数据库的两个表中:SHOW TABLES FROM mysql LIKE '%cost%';mysql> SHOW TABLES FROM mysql LIKE '%cost%';+--------------------------+| Tables_in_mysq.原创 2022-01-16 12:28:59 · 173 阅读 · 0 评论 -
连接查询的成本
MySQL学习系列Condition filtering 介绍连接查询至少是要有两个表的, 课程的讲述中可能使用 order_exp 表的派生表 s1、 s2 和 order_exp2。我们前边说过, MySQL 中连接查询采用的是嵌套循环连接算法, 驱动表会被访问一次, 被驱动表可能会被访问多次, 所以对于两表连接查询来说, 它的查询成本由下边两个部分构成:单次查询驱动表的成本多次查询被驱动表的成本(具体查询多少次取决于对驱动表查询的结果集中有多少条记录)对驱动表进行查询后得到的记录条.原创 2022-01-16 11:48:34 · 157 阅读 · 0 评论 -
再深入Explain
MySQL学习系列EXPLAIN 输出成本前面我们已经对 MySQL 查询优化器如何计算成本有了比较深刻的了解。 但是 EXPLAIN 语句输出中缺少了一个衡量执行计划好坏的重要属性 —— 成本。 不过 MySQL 已经为我们提供了一种查看某个执行计划花费的成本的方式:在 EXPLAIN 单词和真正的查询语句中间加上 FORMAT=JSON。这样我们就可以得到一个 json 格式的执行计划, 里边包含该计划花费的成本, 比如这样:explain format=json SELECT * FRO.原创 2022-01-15 21:13:31 · 138 阅读 · 0 评论 -
基于索引统计数据的成本计算
5.3.2.2. 基于索引统计数据的成本计算index dive有时候使用索引执行查询时会有许多单点区间,比如使用 IN 语句就很容易产生非常多的单点区间,比如下边这个查询(下边查询语句中的…表示还有很多参数):SELECT * FROM order_exp WHERE order_no IN (‘aa1’, ‘aa2’, ‘aa3’, … , ‘zzz’);很显然,这个查询可能使用到的索引就是 idx_order_no,由于这个索引并不是唯一二级索引,所以并不能确定一个单点区间对应的二级索引原创 2022-01-11 22:09:50 · 194 阅读 · 0 评论 -
MySQL查询成本
5.3.1. 什么是成本MySQL 执行一个查询可以有不同的执行方案,它会选择其中成本最低,或者说代价最低的那种方案去真正的执行查询。不过我们之前对成本的描述是非常模糊的,其实在 MySQL 中一条查询语句的执行成本是由下边这两个方面组成的:I/O 成本我们的表经常使用的 MyISAM、InnoDB 存储引擎都是将数据和索引都存储到磁盘上的,当我们想查询表中的记录时,需要先把数据或者索引加载到内存中然后再操作。这个从磁盘到内存这个加载的过程损耗的时间称之为 I/O 成本。CPU 成本读取以原创 2022-01-11 22:05:04 · 269 阅读 · 0 评论 -
MySQL 对连接的执行
MySQL学习系列复习了连接、 内连接、 外连接这些基本概念后, 我们需要理解 MySQL 怎么样来进行表与表之间的连接, 才能明白有的连接查询运行的快, 有的却慢。嵌套循环连接(Nested-Loop Join)我们前边说过, 对于两表连接来说, 驱动表只会被访问一遍, 但被驱动表却要被访问到好多遍, 具体访问几遍取决于对驱动表执行单表查询后的结果集中的记录条数。对于内连接来说, 选取哪个表为驱动表都没关系, 而外连接的驱动表是固定的, 也就是说左(外) 连接的驱动表就是左边的那个表, 右.原创 2022-01-11 20:26:00 · 278 阅读 · 0 评论 -
MySQL连接查询
MySQL学习系列 连接的本质内连接和外连接的根本区别就是在驱动表中的记录不符合ON子句中的连接条件时不会把该记录加入到最后的结果集为了方便讲述, 我们建立两个简单的演示表并给它们写入数据:CREATE TABLE e1 (m1 int, n1 char(1));CREATE TABLE e2 (m2 int, n2 char(1));INSERT INTO e1 VALUES(1, 'a'), (2, 'b'), (3, 'c');INSERT INTO e2 VALUES(2,.原创 2022-01-09 20:57:24 · 417 阅读 · 0 评论 -
单表访问之索引合并
MySQL学习系列我们前边说过 MySQL 在一般情况下执行一个查询时最多只会用到单个二级索引, 但存在有特殊情况, 在这些特殊情况下也可能在一个查询中使用到多个二级索引, MySQL 中这种使用到多个索引来完成一次查询的执行方法称之为: 索引合并/index merge, 具体的索引合并算法有下边三种。1. Intersection 合并Intersection 翻译过来的意思是交集。 这里是说某个查询可以使用多个二级索引, 将从多个二级索引中查询到的结果取交集, 比方说下边这个查询:S.原创 2022-01-09 20:08:16 · 461 阅读 · 0 评论 -
高性能的索引使用策略
MySQL学习系列以下案例当中的表如下所示,注意创建的索引信息不在索引列上做任何操作我们通常会看到一些查询不当地使用索引, 或者使得 MySQL 无法使用已有的索引。 如果查询中的列不是独立的, 则 MySQL 就不会使用索引。 “独立的列”是指索引列不能是表达式的一部分, 也不能是函数的参数。例如, 我们假设 order_status 上有索引, 但是下面这个查询无法使用order_status 列的索引:SELECT * FROM order_exp WHERE order_sta.原创 2022-01-05 23:09:44 · 717 阅读 · 1 评论 -
二级索引和回表优化之MRR
MySQL学习系列一般情况下只能利用单个二级索引执行查询, 比方说下边的这个查询:SELECT * FROM order_exp WHERE insert_time = '2021-03-22 18:34:56' AND order_no> '你好, 李焕英。 7 排 24 号,过期时长:DD00_24S';查询优化器会识别到这个查询中的两个搜索条件:insert_time = '2021-03-22 18:34:56'order_no> '你好, 李焕英。 7 排 24 号,过.原创 2022-01-05 22:00:30 · 316 阅读 · 0 评论 -
执行计划之Extra列详解
MySQL学习系列官方文档路径:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-extra-information顾名思义, Extra 列是用来说明一些额外信息的, 我们可以通过这些额外信息来更准确的理解 MySQL 到底将如何执行给定的查询语句。 MySQL 提供的额外信息很多, 几十个, 无法一一介绍, 挑一些平时常见的或者比较重要的额外信息讲讲, 同时因为数据的关系, 很难实际演示出来, 所以本小节的相关.原创 2022-01-05 21:50:59 · 1174 阅读 · 0 评论 -
执行计划之type详解
MySQL学习系列官方文档路径:https://dev.mysql.com/doc/refman/5.7/en/explain-output.html#explain-join-types我们前边说过执行计划的一条记录就代表着 MySQL 对某个表的执行查询时的访问方法/访问类型, 其中的 type 列就表明了这个访问方法/访问类型是个什么东西, 是较为重要的一个指标, 结果值从最好到最坏依次是:system > const > eq_ref > ref > fulltex.原创 2022-01-05 13:24:23 · 874 阅读 · 0 评论 -
Explain 执行计划
MySQL学习系列什么是执行计划有了慢查询语句后,就要对语句进行分析。一条查询语句在经过MySQL查询优化器的各种基于成本和规则的优化会后生成一个所谓的执行计划,这个执行计划展示了接下来具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等。EXPLAIN语句来帮助我们查看某个查询语句的具体执行计划,我们需要搞懂EPLATNEXPLAIN的各个输出项都是干嘛使的,从而可以有针对性的提升我们查询语句的性能。通过使用EXPLAIN关键字可以模拟优化器执行SQL查询语.原创 2022-01-03 21:49:53 · 794 阅读 · 0 评论 -
查询性能优化
MySQL学习系列前面的章节我们知道如何设计最优的库表结构、如何建立最好的索引,这些对于高性能来说是必不可少的。但这些还不够—还需要合理的设计查询。如果查询写得很糟糕,即使库表结构再合理、索引再合适,也无法实现高性能。 一 :什么是慢查询慢查询日志,顾名思义,就是查询花费大量时间的日志,是指mysql记录所有执行超过long_query_time参数设定的时间阈值的SQL语句的日志。该日志能为SQL语句的优化带来很好的帮助。默认情况下,慢查询日志是关闭的,要使用慢查询日志功能,首先要开启慢查询日志.原创 2022-01-03 20:41:58 · 131 阅读 · 0 评论 -
MySQL 性能优化总论
MySQL学习系列MySQL 性能优化其实是个很大的课题, 在优化上存在着一个调优金字塔的说法:很明显从图上可以看出,越往上走,难度越来越高,收益却是越来越小的。比如硬件和OS调优,需要对硬件和OS有着非常深刻的了解,仅仅就磁盘一项来说,一般非DBA能想到的调整就是SSD盘比用机械硬盘更好,但其实它至少包括了,使用什么样的磁盘阵列(RAID)级别、是否可以分散磁盘IO、是否使用裸设备存放数据,使用哪种文件系统(目前比较推荐的是XFS),操作系统的磁盘调度算法(目前比较推荐deadline,对机械硬.原创 2022-01-03 13:13:40 · 333 阅读 · 0 评论 -
高性能的索引创建策略
MySQL学习系列正确地创建和使用索引是实现高性能查询的基础。前面我们已经了解了索引相关的数据结构,各种类型的索引及其对应的优缺点。现在我们一起来看看如何真正地发挥这些索引的优势。索引列的类型尽量小我们在定义表结构的时候要显式的指定列的类型,以整数类型为例,有TTNYINT、NEDUMNT、INT、BIGTNT这么几种,它们占用的存储空间依次递增,我们这里所说的类型大小指的就是该类型表示的数据范围的大小。能表示的整数范围当然也是依次递增,如果我们想要对某个整数列建立索引的话,在表示的整数范围允许的.原创 2022-01-03 12:58:15 · 477 阅读 · 0 评论 -
深入思考索引在查询中的使用
MySQL学习系列索引在查询中的作用到底是什么? 在我们的查询中发挥着什么样的作用呢?请记住:1、 一个索引就是一个 B+树, 索引让我们的查询可以快速定位和扫描到我们需要的数据记录上, 加快查询的速度。2、 一个 select 查询语句在执行过程中一般最多能使用一个二级索引, 即使在 where 条件中用了多个二级索引。假设表信息如下 1. 扫描区间对于某个查询来说,最简单粗暴的执行方案就是扫描表中的所有记录,判断每一条记录是否符合搜索条件。如果符合,就将其发送到客户端,否则就跳过该.原创 2022-01-02 22:54:54 · 120 阅读 · 0 评论 -
简单了解 MyISAM 中的索引
MySQL学习系列我们介绍的都是InnoDB存储引擎中的索引方案,为了内容的完整性,以及各位可能在面试的时候遇到这类的问题,我们有必要再简单介绍一下MyISAM存储引擎中的索引方案。我们知道InnoDB中索引即数据,也就是聚簇索引的那棵B+树的叶子节点中已经把所有完整的用户记录都包含了,而MyISAM的索引方案虽然也使用树形结构,但是却将索引和数据分开存储的。MyISAM将表中的记录按照记录的插入顺序单独存储在一个文件中,称之为数据文件。这个文件并不划分为若干个数据页,有多少记录就往这个文件中塞多少.原创 2022-01-02 22:33:15 · 284 阅读 · 0 评论 -
MySQL索引
MySQL学习系列 生活中的索引MySQL 官方对索引的定义为: 索引(Index) 是帮助 MySQL 高效获取数据的数据结构。 可以得到索引的本质: 索引是数据结构。上面的理解比较抽象, 举一个例子, 平时看任何一本书, 首先看到的都是目录, 通过目录去查询书籍里面的内容会非常的迅速。上图就是一本金瓶梅的书, 书籍的目录是按顺序放置的, 有第一节, 第二节它本身就是一种顺序存放的数据结构, 是一种顺序结构。另外通过目录(索引) , 可以快速查询到目录里面的内容, 它能高效获取数据, 通过.原创 2022-01-02 22:30:45 · 334 阅读 · 0 评论 -
字段数据类型优化
MySQL学习系列 基本原则更小的通常更好一般情况下,应该尽量使用可以正确存储数据的最小数据类型。 更小的数据 类型通常更快, 因为它们占用更少的磁盘、 内存和 CPU 缓存, 并且处理时需要 的 CPU 周期也更少。但是要确保没有低估需要存储的值的范围, 因为在的多个地方增加数据类型 的范围是一个非常耗时和痛苦的操作。 如果无法确定哪个数据类型是最好的, 就 选择你认为不会超过范围的最小类型。简单就好简单数据类型的操作通常需要更少的 CPU 周期。 例如, 整型比字符操作代 价更低.原创 2022-01-02 19:55:34 · 187 阅读 · 0 评论 -
数据库表设计
MySQL学习系列良好的表结构设计是高性能的基石, 应该根据系统将要执行的业务查询来设 计, 这往往需要权衡各种因素。 糟糕的表结构设计, 会浪费大量的开发时间, 严 重延误项目开发周期, 让人痛苦万分, 而且直接影响到数据库的性能, 并需要花 费大量不必要的优化时间, 效果往往还不怎么样。在数据库表设计上有个很重要的设计准则, 称为范式设计。一. 范式设计1. 什么是范式?范式来自英文 Normal Form, 简称 NF。 要想设计—个好的关系, 必须使关系满足一定的约束条件, 此约束已.原创 2022-01-02 19:29:48 · 549 阅读 · 0 评论 -
事务和事务的隔离级别
MySQL学习系列为什么需要事务事务是数据库管理系统(DBMS) 执行过程中的一个逻辑单位(不可再进行分割) , 由一个有限的数据库操作序列构成(多个 DML 语句, select 语句不包含事务) , 要不全部成功, 要不全部不成功。A 给 B 要划钱, A 的账户-1000 元, B 的账户就要+1000 元, 这两个 update 语句必须作为一个整体来执行, 不然 A 扣钱了, B 没有加钱这种情况就是错误的。 那么事务就可以保证 A 、 B 账户的变动要么全部一起发生, 要么全部一起不.原创 2022-01-02 16:09:54 · 420 阅读 · 0 评论 -
MySQL 中的系统库之mysql
MySQL学习系列1. 权限系统表因为权限管理是 DBA 的职责, 所以对于这个部分的表, 我们大概了解下即可。 在 mysql 系统库中, MySQL 访问权限系统表, 放在 mysql 库中, 主要包含如下几个表。user: 包含用户账户、 全局权限和其他非权限列表(安全配置字段和资源控制字段) 。db: 数据库级别的权限表。 该表中记录的权限信息代表用户是否可以使用这些权限来访问被授予访问的数据库下的所有对象(表或存储程序) 。tables_priv: 表级别的权限表。columns.原创 2022-01-02 11:43:58 · 170 阅读 · 0 评论 -
MySQL 中的系统库之information_schema
MySQL学习系列1. 什么是 information_schemainformation_schema 提供了对数据库元数据、 统计信息以及有关 MySQL Server 信息的访问(例如: 数据库名或表名、 字段的数据类型和访问权限等)。该库中保存的信息也可以称为 MySQL 的数据字典或系统目录。在每个MySQL 实例中都有一个独立的information_schema, 用来存储MySQL实例中所有其他数据库的基本信息。information_schema 库下包含多个只读表(非持久表) .原创 2022-01-01 22:28:34 · 3786 阅读 · 0 评论