schema 订阅
Schema
信息
操作系统
未知
开发语言
Java
开源协议
未知
Schema
Schema是一个利用RDF与RDF Schema进行存储,查询,讨论(reasoning )的Java开源框架.Sesame既可以当作RDF与 RDF Schema的数据库或当作一个Java 库用来为应用程序提供RDF的功能.
收起全文
精华内容
参与话题
问答
  • 数据库中的Schema是什么?

    万次阅读 多人点赞 2018-01-10 13:14:35
    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas andschemata都可以作为复数形式。模式中包含了schema对象,可以是表(table)、列(column)、数据类型(data type...

    参考:http://database.guide/what-is-a-database-schema/

    在数据库中,schema(发音 “skee-muh” 或者“skee-mah”,中文叫模式)是数据库的组织和结构,schemas 和schemata都可以作为复数形式。模式中包含了schema对象,可以是(table)、(column)、数据类型(data type)、视图(view)、存储过程(stored procedures)、关系(relationships)、主键(primary key)、外键(foreign key)等。数据库模式可以用一个可视化的图来表示,它显示了数据库对象及其相互之间的关系

     

    以上是模式图的一个简单例子,显示了三个表及其数据类型、表之间的关系以及主键和外键,以下是数据库模式的一个更复杂的例子。

     

    在这种情况下,模式图分为四个部分:

    (1)Customer Data(客户数据):与客户有关的数据,如姓名,地址等

    (2)Business(业务):业务所需的数据,例如员工,商店位置,付款细节等

    (3)Inventory(库存):所有产品的细节。在这里,产品是电影,所以它包含电影标题,类别,演员等数据。

    (4)Views(视图):关于用于评估的数据的特别观点,所以通过这些模式图,我们可以进一步创建一个数据库,实际上,MySQL Workbench允许我们直接从图中生成一个Create Table脚本,然后我们就可以直接用这个脚本去创建一个数据库,还可以直接将一个数据库转换为一个关系图表。

    Schema和DataBase是否等同?

    涉及到数据库的模式有很多疑惑,问题经常出现在模式和数据库之间是否有区别,如果有,区别在哪里。

    取决于数据库供应商

    对schema(模式)产生疑惑的一部分原因是数据库系统倾向于以自己的方式处理模式

    1MySQL的文档中指出,在物理上,模式与数据库是同义的,所以,模式和数据库是一回事。

    2但是,Oracle的文档却指出,某些对象可以存储在数据库中,但不能存储在schema中。 因此,模式和数据库不是一回事。

    (3)而根据这篇SQL Server技术文章SQLServer technical article,schema是数据库SQL Server内部的一个独立的实体。 所以,他们也不是一回事。

    因此,取决于您使用的RDBMS,模式和数据库可能不一样。

    SQL标准对schema如何定义?

    ISO/IEC 9075-1 SQL标准中将schema定义为描述符的持久命名集合(a persistent, named collection of descriptors),如果你之前对schema的定义疑惑不解,希望看了我的这篇文章会好一些,起码不会更差。

    广义上

    造成疑惑的另一个原因可能是由于schema这一术语具有如此广泛的含义,因为它在不同的环境下有不同的含义,schema一词源于希腊语skhēma,意思是形态(form),轮廓(figure),形状(shape)或方案(plan)。Schema在心理学中被用来描述组织信息类别及其之间关系的有组织的思维或行为模式。我们在设计一个数据库之前,还需要看看数据中的信息种类和它们之间的关系, 在我们开始使用DBMS中的物理模式之前,我们需要创建一个概念模式。在软件开发中讨论模式时,可以讨论概念模式、物理模式、内部模式、外部模式、逻辑模式等,每一个都有其特定的含义。

    DBMS的schema定义

    以下是三个领先的关系数据库系统的schema定义:

    MySQL

    Conceptually, a schema is a set of interrelated database objects, such as tables, table columns, data types of the columns, indexes, foreign keys, and so on. These objects are connected through SQL syntax, because the columns make up the tables, the foreign keys refer to tables and columns, and so on. Ideally, they are also connected logically, working together as part of a unified application or flexible framework. For example, theINFORMATION_SCHEMA and performance_schema databases use “schema” in their names to emphasize the close relationships between the tables and columns they contain.

    In MySQL, physically, aschema is synonymous with adatabase. You can substitute the keywordSCHEMA instead ofDATABASE in MySQL SQL syntax, for example using CREATE SCHEMA instead of CREATE DATABASE.

    Some other database products draw a distinction. For example, in the Oracle Database product, aschema represents only a part of a database: the tables and other objects owned by a single user.

    MySQL官方文档指出,从概念上讲,模式是一组相互关联的数据库对象,如表,表列,列的数据类型,索引,外键等等。但是从物理层面上来说,模式与数据库是同义的。你可以在MySQL的SQL语法中用关键字SCHEMA替代DATABASE,例如使用CREATE SCHEMA来代替CREATE DATABASE

    参考: MySQL Glossary, MySQL 5.7 参考手册. MySQL, Retrieved 6 June 2016。

    SQL Server

    The names of tables, fields, data types, and primary and foreign keys of a database.

    SQL Server官方文档指出,schema中包含了数据库的表,字段,数据类型以及主键和外键的名称。参考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.

    Oracle Database

    Oracle中的schema系统与其他数据库系统大不相同,Oracle的schema与数据库用户密切相关。

    A schema is a collection of logical structures of data, or schema objects. A schema is owned by a database user and has the same name as that user. Each user owns a single schema.

    Oracle官方文档指出,schema是数据或模式对象的逻辑结构的集合,由数据库用户拥有,并且与该用户具有相同的名称,也就是说每个用户拥有一个独立的schema。

    参考: Oracle Database Objects. Oracle Database Online Documentation 12c Release 1 (12.1). Oracle Help Center. Retrieved 6 June 2016.

    如果想了解更多关于schema的内容,可以参考这篇文章schema definitions by DBMS.

    创建Schema

    尽管上述三个DBMS在定义schema方面有所不同,还是有一个共同点,就是每一个都支持CREATE SCHEMA语句。

    MySQL

    在MySQL中,CREATE SCHEMA创建了一个数据库,这是因为CREATE SCHEMACREATE DATABASE的同义词。 换句话说,你可以使用CREATE SCHEMA或者CREATE DATABASE来创建一个数据库。

    Oracle Database

    在Oracle中,CREATE SCHEMA语句实际上并不创建一个模式,这是因为已经为在创建用户时,数据库用户就已经创建了一个模式,也就是说在ORACLE中CREATE USER就创建了一个schema,CREATE SCHEMA语句允许你将schema同表和视图关联起来,并在这些对象上授权,从而不必在多个事务中发出多个SQL语句。

    SQL Server

    在SQL Server中,CREATE SCHEMA将按照名称创建一个模式,与MySQL不同,CREATE SCHEMA语句创建了一个单独定义到数据库的模式。和ORACLE也不同,CREATE SCHEMA语句实际创建了一个模式(前面说到这个语句在ORACLE中不创建一个模式),在SQL Server中,一旦创建了模式,就可以往模式中添加用户和对象。

    总结

    schema这个词可以用在很多不同的环境中,在特定数据库管理系统创建一个schema时,您需要使用DBMS特定定义模式,当你切换到一个新的数据库管理系统时,一定要查看该系统是如何定义schema的。

    展开全文
  • schema

    千次阅读 2018-12-07 18:13:34
    从网上摘的一个比喻,很形象的解释了什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User,不妨一看。 “我们可以把Database看作是一个大仓库。仓库分了很多很多的房间,Schema就是其中的...

    从网上摘的一个比喻,很形象的解释了什么是Database,什么是Schema,什么是Table,什么是列,什么是行,什么是User,不妨一看。

    “我们可以把Database看作是一个大仓库。仓库分了很多很多的房间,Schema就是其中的房间。一个Schema代表一个房间。Table可以看作是每个Schema中的床,Table(床)被放入每个房间中,不能放置在房间之外,那岂不是晚上睡觉无家可归了。然后床上可以放置很多物品,就好比 Table上可以放置很多列和行一样,数据库中存储数据的基本单元是Table。现实中每个仓库放置物品的基本单位就是床, User就是每个Schema的主人(所以Schema包含的是Object,而不是User),user和schema是一一对应的,每个user在没有特别指定下只能使用自己schema(房间)的东西。如果一个user想使用其他schema(房间)的东西,那就要看那个schema(房间)的user(主人)有没有给你这个权限了,或者看这个仓库的老大(DBA)有没有给你这个权限了。换句话说,如果你是某个仓库的主人,那么这个仓库的使用权和仓库中的所有东西都是你的(包括房间),你有完全的操作权,可以扔掉不用的东西从每个房间,也可以放置一些有用的东西到某一个房间,你还可以给每个User分配具体的权限,也就是他到某一个房间能做些什么,是只能看(Read-Only),还是可以像主人一样有所有的控制权(R/W),这个就要看这个User所对应的角色Role了。”

    展开全文
  • Schema

    千次阅读 2011-11-26 14:29:15
    一个有效的Schema文件的结构如下: elementFormDefault="qualified" attributeFormDefault="unqualified">   Schema类型的元素是Schema文件的根元素,每个Schema文件必须包含Schema类型的元素。...
    一个有效的Schema文件的结构如下:
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified" attributeFormDefault="unqualified">
    <!-- 这里编写内容 -->
     </xs:schema>

    Schema类型的元素是Schema文件的根元素,每个Schema文件必须包含Schema类型的元素。Schema类型元素的属性有以下几种:
    xmlns: xmlns是xhtml namespace的缩写,称为“命名空间” xmlns属性的值是一个URI或URL地址 xmlns属性不可缺少
    targetNamespace: 该属性的值是在xmlns已经定义好的命名空间中选择。该属性可有可无
    elementFormDefault:用于指示子元素是否放到命名空间中,有“qualified”和“unqualified”两种取值
    attributeFormDefault: 用于指示是否把某个子元素的属性放到命名空间中,有“qualified”和“unqualified”两种取值
    还有其他属性

    简单类型元素主要有:
    simpleType类型元素、element类型元素、attribute类型元素、enumeration类型元素、pattern类型元素、list类型元素 union类型元素。

    simpleType类型元素:

    simpleType类型的属性有“final”、“id”和“name”。“final”属性指出派生的类型,防止该simpleType元素的指定派生类型,该值可以包含一个列表,该列表是list、union或restriction元素的子集。

    element类型元素:
    element用于定义一个普通的元素。一般格式如下:

    <element name="name" type="string"></element>
    <element name="age" type="int"></element>
    <element name="address" type="string"></element>
    element元素的属性有name、abstract、block、default、final、fixed、id、nillable、maxOccurs、minOccurs、substitutionGroup和type
    name属性的值是该element元素的元素名。
    type属性的值是该element元素的数据类型。
    ref属性的值必须指向一个全局元素。
    maxOccurs属性的值是元素在其父元素中出现的最大次数,它的取值为大于0或等于0的数,在默认状态下为unbounded。
    minOccurs属性的值是元素在其父元素中出现的最小次数,它的取值为大于0或等于0的数,在默认状态下为1。

    attribute类型元素:
    attribute用于声明一个属性元素。如:

    <?xml version="1.0" encoding="UTF-8"?>
    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
    elementFormDefault="qualified"
    attributeFormDefault="unqualified">
    <xs:attribute name="a"></xs:attribute>
    </xs:schema>

    attribute主要有name、default、fixed、id、 ref、type、use几种属性。

    (1)Default:指该attribute类型元素的名称具有默认值;
    (2)fixed:指该attribute类型元素的名称具有固定的值 ;
    (3)use:指示如何使用该attribute类型元素。use属性的值必须是“optional”、“prohibited”、“required”中的一种。“optional”表示该属性可以是任何值,并且该属性是可选的;“prohibited”表示不能使用该属性;“required”表示该属性必须出现一次。在默认状态下use的值是“optional”。

    sequence类型元素:

    sequence类型要求组中的元素以指定的顺序出现在父元素中。与DTD中逗号的用法类似,sequence类型的属性如下:
    id属性:唯一标识该sequence类型的元素。 
     maxOccurs和minOccurs属性:限制该元素组在父元素中出现的次数。

    complexType类型元素:

    complexType类型用于定义一个复合类型的元素。

    complexType类型的属性有以下几种:

    name属性:该复合类型元素的名称。

    abstract属性:指示在实例文档中是否可以使用复杂类型。如果该值为true,则元素不能直接使用该复杂类型,而是必须使用从该复杂类型派生的复杂类型。默认值为false。

    final属性:防止从该复杂类型元素派生出指定的类型。

    mixed属性:指示是否允许字符数据出现在该复杂类型的子元素之间。如果值为“false”,则不允许字符数据出现,反之,可以。

    choice类型元素 :

    choice类型限制唯一的一个元素从某个组中被选择。choice类型的属性主要有以下几种:

    id属性:唯一标识该元素,id属性的值必须唯一。

    maxOccurs和minOccurs属性:限制该元素组在父元素中出现的次数。


    展开全文
  • MySQL8.0-INFORMATION_SCHEMA增强

    万次阅读 热门讨论 2019-09-17 00:26:55
    导读作者:Gopal Shankar翻译:徐晨亮原文地址:https://mysqlserverteam.com/mysql-8-0-improvements-to-in...
        

    导读

    作者:Gopal Shankar

    翻译:徐晨亮
    原文地址:https://mysqlserverteam.com/mysql-8-0-improvements-to-information_schema/


    Coinciding with the new native data dictionary in MySQL 8.0, we have made a number of useful enhancements to our INFORMATION_SCHEMA subsystem design in MySQL 8.0. In this post I will first go through our legacy implementation as it has stood since MySQL 5.1, and then cover what’s changed.
    与MySQL 8.0原生数据字典一致,在MySQL 8.0的INFORMATION_SCHEMA子系统设计中,我们做了一些很有用的增强。在这篇文章中,我将会介绍自MySQL 5.1以来的旧的实现方式,然后介绍我们做了什么改变。
    Background
    INFORMATION_SCHEMA was first introduced into MySQL 5.0, as a standards compliant way of retrieving meta data from a running MySQL server. When we look at the history of INFORMATION_SCHEMA there have been a number of complaints about the performance of certain queries, particularly in the case that there are many database objects (schemas, tables etc).
    INFORMATION_SCHEMA首次引入MySQL 5.0,作为一种从正在运行的MySQL服务器检索元数据的标准兼容方式。当我们回顾INFORMATION_SCHEMA的历史时,对于某些特定查询性能总是有很多的抱怨,特别是在有许多数据库对象(schema,表等)的情况下。
    In an effort to address these reported issues, since MySQL 5.1 we have made a number of performance optimizations to speed up the execution of INFORMATION_SCHEMA queries. The optimizations are described in the MySQL manual, and apply when the user provides an explicit schema name or table name in the query.
    为了解决这些上报的问题,从MySQL 5.1开始,我们进行了许多性能优化来加快INFORMATION_SCHEMA查询的执行速度。MySQL手册<链接1>中描述了这些优化,当用户在查询中提供显式schema名称或表名时,将会应用这些。
    Alas, despite these improvements INFORMATION_SCHEMA performance is still a major pain point for many of our users. The key reason behind these performance issues in the current INFORMATION_SCHEMA implementation is that INFORMATION_SCHEMA tables are implemented as temporary tables that are created on-the-fly during query execution. These temporary tables are populated via:


    1. Meta data from files, e.g. table definitions from .FRM files.
    2. Details from storage engines, e.g. dynamic table statistics.
    3. Data from global data structures in the MySQL server.


    尽管有这些改进,INFORMATION_SCHEMA的性能仍然是我们许多用户的主要痛点。在当前INFORMATION_SCHEMA实现方式下产生的性能问题背后的关键原因是,INFORMATION_SCHEMA表的查询实现方式是在查询执行期间创建临时表。这些临时表通过以下方式填充:


    1. 元数据来自文件,例如:表定义来自FRM文件
    2. 细节来自于存储引擎,例如:动态表的统计信息
    3. 来自MySQL server层中全局数据结构的数据



    For a MySQL server having hundreds of database, each with hundreds of tables within them, the INFORMATION_SCHEMAquery would end-up doing lot of I/O reading each individual FRM files from the file system. And it would also end-up using more CPU cycles in effort to open the table and prepare related in-memory data structures. It does attempt to use the MySQL server table cache (the system variable ‘table_definition_cache‘), however in large server instances it’s very rare to have a table cache that is large enough to accommodate all of these tables.
    对于一个MySQL实例来说可能有上百个库,每个库又有上百张表,INFORMATION_SCHEMA查询最终会从文件系统中读取每个单独的FRM文件,造成很多I/O读取。并且最终还会消耗更多的CPU来打开表并准备相关的内存数据结构。它确实尝试使用MySQL server层的表缓存(系统变量table_definition_cache ),但是在大型实例中,很少有一个足够大的表缓存来容纳所有的表。
    One can easily face the above mentioned performance issue if the optimization is not used by the INFORMATION_SCHEMAquery. For example, let us consider the two queries below
    如果INFORMATION_SCHEMA查询未使用优化,则可以很容易碰到上面的性能问题。例如,让我们考虑下面的两个查询


    mysql> EXPLAIN SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE
    -> TABLE_SCHEMA = 'test' AND TABLE_NAME = 't1'\G
    *************************** 1. row ***************************
    id: 1
    select_type: SIMPLE
    table: TABLES
    partitions: NULL
    type: ALL
    possible_keys: NULL
    key: TABLE_SCHEMA,TABLE_NAME
    key_len: NULL
    ref: NULL
    rows: NULL
    filtered: NULL
    Extra: Using where; Skip_open_table; Scanned 0 databases
    1 row in set, 1 warning (0.00 sec)

    mysql> EXPLAIN SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE
    -> TABLE_SCHEMA like 'test%' AND TABLE_NAME like 't%'\G
    *************************** 1. row ***************************
    id: 1
    select_type: SIMPLE
    table: TABLES
    partitions: NULL
    type: ALL
    possible_keys: NULL
    key: NULL
    key_len: NULL
    ref: NULL
    rows: NULL
    filtered: NULL
    Extra: Using where; Skip_open_table; Scanned all databases
    1 row in set, 1 warning (0.00 sec)


    As we can see from the EXPLAIN output, we see that the former query would use the values provided in WHERE clause for the TABLE_SCHEMA and TABLE_NAME field as a key to read the desired FRM files from the file system. However, the latter query would end up reading all the FRM in the entire data directory, which is very costly and does not scale.
    EXPLAIN的输出可以看到。我们看到前一个查询将使用WHERE子句中为TABLE_SCHEMATABLE_NAME字段提供的值作为键,从文件系统读取所需FRM文件。但是,后一个查询最终将读取整个数据目录中的所有FRM,这非常昂贵且无法扩展。

    Changes in MySQL 8.0
    One of the major changes in 8.0 is the introduction of a native data dictionary based on InnoDB. This change has enabled us to get rid of file-based metadata store (FRM files) and also help MySQL to move towards supporting transactional DDL. For more details on introduction of data dictionary feature in 8.0 and its benefits, please look at Staale’s post here.
    8.0中的一个主要变化是引入了基于InnoDB的数据字典。这一变化使我们能够摆脱基于文件的元数据存储(FRM文件),并帮助MySQL转向支持事务DDL。有关在8.0中引入数据字典功能及其优点的更多详细信息,请在此处查看Staale的文章<链接2>
    Now that the metadata of all database tables is stored in transactional data dictionary tables, it enables us to design an INFORMATION_SCHEMA table as a database VIEW over the data dictionary tables. This eliminates costs such as the creation of temporary tables for each INFORMATION_SCHEMA query during execution on-the-fly, and also scanning file-system directories to find FRM files. It is also now possible to utilize the full power of the MySQL optimizer to prepare better query execution plans using indexes on data dictionary tables.
    既然所有数据库表的元数据都存储在事务数据字典表中,它使我们能够将INFORMATION_SCHEMA表设计为数据字典表上的数据库视图这消除了成本,例如在执行期间为每个INFORMATION_SCHEMA查询创建临时表,以及扫描文件系统目录以查找FRM文件。现在还可以利用MySQL优化器的全部功能,使用数据字典表上的索引来获得更好的执行计划。
    The following diagram explains the difference in design in MySQL 5.7 and 8.0.
    下面的图解释了MySQL 5.7和8.0设计上的区别
    640?wx_fmt=jpeg
    If we consider the above example under Background, we see that the optimizer plans to use indexes on data dictionary tables, in both the cases.
    如果我们在之前介绍的背景下考虑上面的例子,我们会看到优化器在两种情况下都会使用数据字典表上的索引。


    mysql> EXPLAIN SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'test' AND TABLE_NAME = 't1';
    +--+-----------+-----++------+------------------+----------++----------------------+----+--------+----------------------------------+
    |id|select_type|table||type |possible_keys |key ||ref |rows|filtered|Extra |
    +--+-----------+-----++------+------------------+----------++----------------------+----+--------+----------------------------------+
    | 1|SIMPLE |cat ||index |PRIMARY |name ||NULL | 1| 100.00|Using index |
    | 1|SIMPLE |sch ||eq_ref|PRIMARY,catalog_id|catalog_id||mysql.cat.id,const | 1| 100.00|Using index |
    | 1|SIMPLE |tbl ||eq_ref|schema_id |schema_id ||mysql.sch.id,const | 1| 10.00|Using index condition; Using where|
    | 1|SIMPLE |col ||eq_ref|PRIMARY |PRIMARY ||mysql.tbl.collation_id| 1| 100.00|Using index |
    +--+-----------+-----++------+------------------+----------++----------------------+----+--------+----------------------------------+

    mysql> EXPLAIN SELECT TABLE_NAME FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA like 'test%' AND TABLE_NAME like 't%';
    +--+-----------+-----++------+------------------+----------++-----------------------+----+--------+---------------------------------+
    |id|select_type|table||type |possible_keys |key || ref |rows|filtered|Extra |
    +--+-----------+-----++------+------------------+----------++-----------------------+----+--------+---------------------------------+
    | 1|SIMPLE |cat ||index |PRIMARY |name || NULL | 1| 100.00|Using index |
    | 1|SIMPLE |sch ||ref |PRIMARY,catalog_id|catalog_id|| mysql.cat.id | 6| 16.67|Using where; Using index |
    | 1|SIMPLE |tbl ||ref |schema_id |schema_id || mysql.sch.id | 26| 1.11|Using index condition;Using where|
    | 1|SIMPLE |col ||eq_ref|PRIMARY |PRIMARY || mysql.tbl.collation_id| 1| 100.00|Using index |
    +--+-----------+-----++------+------------------+----------++-----------------------+----+--------+---------------------------------+


    When we look at performance gain with this new INFORMATION_SCHEMA design in 8.0, we see that it is much more efficient than MySQL 5.7. As an example, this query is now ~100 times faster (with 100 databases with 50 tables each). A separate blog will describe more about performance of INFORMATION_SCHEMA in 8.0.
    当我们通过这个全新的8.0设计的INFORMATION_SCHEMA来看性能提升时,我们发现它比MySQL 5.7更有效。例如,此查询现在快〜100倍(100个数据库,每个50个表)。另外一篇博客将详细介绍8.0 中INFORMATION_SCHEMA性能 。


    SELECT TABLE_SCHEMA, TABLE_NAME, TABLE_TYPE, ENGINE, ROW_FORMAT
    FROM information_schema.tables
    WHERE TABLE_SCHEMA LIKE 'db%';

    Sources of Metadata


    Not all the INFORMATION_SCHEMA tables are implemented as a VIEW over the data dictionary tables in 8.0. Currently we have the following INFORMATION_SCHEMA tables designed as views:
    并非所有INFORMATION_SCHEMA表都通过8.0中的数据字典表作为视图实现。目前,我们将以下INFORMATION_SCHEMA表设计为视图:


    • SCHEMATA
    • TABLES
    • COLUMNS
    • VIEWS
    • CHARACTER_SETS
    • COLLATIONS
    • COLLATION_CHARACTER_SET_APPLICABILITY
    • STATISTICS
    • KEY_COLUMN_USAGE
    • TABLE_CONSTRAINTS



    Upcoming MySQL 8.0 versions aims to provide even the following INFORMATION_SCHEMA tables as views:
    即将推出的MySQL 8.0版本将提供以下  INFORMATION_SCHEMA表作为视图:


    • EVENTS
    • TRIGGERS
    • ROUTINES
    • REFERENTIAL_CONSTRAINTS


    To describe the INFORMATION_SCHEMA queries which are not directly implemented as VIEWs over data dictionary tables, let me first describe that there are two types of meta data which are presented in INFORMATION_SCHEMA tables:
    为了描述INFORMATION_SCHEMA查询,这些查询没有直接实现为数据字典表上的视图,让我首先描述在INFORMATION_SCHEMA表中有两种类型的元数据:
    • Static table metadata. For example: TABLE_SCHEMATABLE_NAMETABLE_TYPEENGINE. These statistics will be read directly from the data dictionary.
    • Dynamic table metadata. For example: AUTO_INCREMENTAVG_ROW_LENGTHDATA_FREE. Dynamic metadata frequently changes (for example: the auto_increment value will advance after each insert).In many cases the dynamic metadata will also incur some cost to accurately calculate on demand, and accuracy may not be beneficial for the typical query. Consider the case of the DATA_FREE statistic which shows the number of free bytes in a table – a cached value is usually sufficient.
    • 静态表元数据。例如:TABLE_SCHEMATABLE_NAMETABLE_TYPEENGINE这些静态数据将会从数据字典中直接读取
    • 动态表元数据。例如:AUTO_INCREMENTAVG_ROW_LENGTHDATA_FREE动态元数据经常会变更(例如:自增值会在每次插入后自增)。在许多情况下,动态元数据也会产生一些成本,以便按需准确计算,并且对于某些特定的查询这个准确性并没有用。考虑DATA_FREE统计信息的情况,该统计信息显示表中的空闲字节数 - 缓存值通常就足够了。


    In MySQL 8.0, the dynamic table metadata will default to being cached. This is configurable via the setting information_schema_stats (default cached), and can be changed to information_schema_stats=latest in order to always retrieve the dynamic information directly from the storage engine (at the cost of slightly higher query execution).
    在MySQL 8.0中,动态表元数据将默认为缓存这可以通过设置information_schema_stats(默认缓存)进行配置,并且可以更改为information_schema_stats = latest,以便始终直接从存储引擎检索动态信息(以稍高的查询执行为代价)
    As an alternative, the user can also execute ANALYZE TABLE on the table, to update the cached dynamic statistics.
    作为替代方案,用户还可以在表上执行ANALYZE TABLE,以更新缓存的动态统计信息。

    Conclusion
    The INFORMATION_SCHEMA design in 8.0 is a step forward enabling:


      • Simple and maintainable implementation.
      • Us to get rid of numerous INFORMATION_SCHEMA legacy bugs.
      • Proper use of the MySQL optimizer for INFORMATION_SCHEMA queries.
      • INFORMATION_SCHEMA queries to execute ~100 times faster, compared to 5.7, when retrieving static table metadata, as show in query Q1.


    8.0中的INFORMATION_SCHEMA设计是向前迈出的一步:


      • 简单且可维护的实现。
      • 我们摆脱了很多的INFORMATION_SCHEMA遗留漏洞。
      • 正确使用MySQL优化器进行INFORMATION_SCHEMA查询。
      • 与检索静态表元数据时的5.7相比,INFORMATION_SCHEMA查询执行速度快~100倍,如查询Q1中所示。


    There is more to discuss about INFORMATION_SCHEMA in 8.0. The new implementation comes with a few changes in behavior when compared to the old INFORMATION_SCHEMA implementation. Please check the MySQL manual for more details about it.
    Thanks for using MySQL!
    在8.0中还有更多关于INFORMATION_SCHEMA的讨论。与旧的INFORMATION_SCHEMA实现相比,新的实现方式有一些变化。有关它的更多详细信息,请查看MySQL手册。
    感谢您使用MySQL!


    链接1:
    http://dev.mysql.com/doc/refman/5.7/en/information-schema-optimization.html
    链接2:http://mysqlserverteam.com/a-new-data-dictionary-for-mysql/


    END



    640?wx_fmt=png




    640?wx_fmt=gif



    扫码加入MySQL技术Q群

    (群号:529671799)

       





    展开全文
  • 前言:Spring从2.0开始引入了一个新的机制用于扩展xml模式,我们就可以编写自定义的xml bean解析器然后集成到Spring IoC容器中(Spring 不识别aop,mvc,这些标签都是通过本章要学习的内容,扩展标签) ...
  • 一、错误 在搭建Eureka客户端的时候...1、java.lang.IllegalArgumentException: Schema specific part is opaque 2、com.netflix.discovery.shared.transport.TransportException: Cannot execute request on any ...
  • Creating schema using Saiku Schema Designer

    千次阅读 2016-05-18 13:32:36
    原文地址:http://wiki.meteorite.bi/display/SAIK/Creating+schema+using+Saiku+Schema+Designer Created by Tom Barber, last modified on Apr 28, 2015 What Is A Schema? A schema in its r
  • Json Schema

    2017-08-03 19:25:24
    SON Schema指的是数据交换中的一种虚拟的“合同”。 JSON验证器负责验证语法错误,JSON Schema负责提供一致性检验。 JSON Schema是数据接收方额第一道防线,也是数据发送方节约时间、保证数据正确的好工具。 ...
  • Schema约束

    千次阅读 2015-11-07 13:36:30
    1.1. Schema约束 几个重要知识: 1. namespace 相当于schema文件的id 2. targetNamespace属性 用来指定schema文件的namespace的值  3. xmlns属性 引入一个约束, 它的值是一个schema文件的...
  • 下面的Schema文件里我看教程和视频都加了前缀,跟着做尝试加了xs:, 后来我全部替换成abc:也对,现在全部删掉了,也没问题。那加前缀到底有什么意义呢? 我理解element,sequence这些东西都是那个xmlns里规定的,...
  • 本文原文连接:...有时候你会发现过去一直启动正常的系统,某天启动时会报出形如下面的错误:org.xml.sax.SAXParseException: schema_reference.4: Failed to read schema document 'http://www
  • Schemaschema文档

    千次阅读 2019-06-19 17:34:01
    Schemaschema文档 技术上说schema是元数据的一个抽象集合,包含一套schema component: 主要是元素与属性的声明、复杂与简单数据类型的定义。这些schema component通常是在处理一批schema document时被创建。...
  • 一般推荐使用Json Schema(一种Json的数据结构定义)去校验。 对于JsonSchema,有很多种方式:可以自己一个个节点的写,可以使用生成工具,或者在线生成工具生成。 那么如何快速的根据Json内容 写出一个Json...
  • Java XML Schema

    千次阅读 2012-10-10 21:54:41
    XML Schema XML Schema 也是一种用于定义和描述 XML文档结构与内容的模式语言,其出现是为了克服 DTD 的局限性 XML Schema VS DTD: XML Schema符合XML语法结构。 DOM、SAX等XML API很容易解析出XML Schema...
  • 改善database schema

    千次阅读 2015-12-28 22:47:36
    Hibernate 读取你java模型类的映射元数据,并且生成schemaDDL语句。你可以将它们导出到一个text文件中,或者当你在继承测试运行的时候直接在数据库执行。因为大多数数据库schema语言是有产品特性的,你需要一直保持...
  • 摘要:在之前的Solr版本中(Solr5之前),在创建core的时候,Solr会自动创建好schema.xml,但是在之后的版本中,新加入了动态更新schema功能,这个默认的schema.xml确找不到了,那么managed-schemaschema.xml是...
  • expdp 导出schema的问题

    2016-02-06 08:17:43
    现在我想用data pump expdp导出一个schema下所有的objects,就是逻辑备份这个schema,这个时候如果有和这个schema相关的transaction未提交或者有用户正在做update,那么expdp是使用undo里面的数据正常运行呢?...
  • 官网原文标题《Schema Registry》 翻译时间:2018-10-28 官网原文地址:http://pulsar.apache.org/docs/en/concepts-schema-registry/ 译者:Scheme注册是Pulsar保证数据类型安全的机制。 --------------------...
  • webx—Schema使用

    千次阅读 2012-06-14 15:25:16
    XML Schema 的作用是定义 XML 文档的合法构建模块,类似 DTD。 Schema的概念中比较难理解的是命名空间(Namespace):一个Schema可以看作是若干个元素、类型组成的集合,它们属于一个特定的命名空间。通俗来讲...
  • 警告提示如下: Description Resource Path Location ... No grammar constraints (DTD or XML Schema) referenced in the document. *.xml /XXXProject line 1 XML Problem 这是由于未指定 DOCTYPE 造成的警告提示
  • test.information_schema' doesn't exist]</code> from the information I've seen online it looks like my code should work, however this is the first time I've attempted something like this. Here is my ...
  • schema workbench的操作

    千次阅读 2013-12-24 15:46:32
    schema workbench连不上sql,如下:   看不懂,这是驱动的问题,你只要使用最新的驱动, 将对应驱动放入schema workbench.bat文件所在目录中,drivers目录下,然后直接设置改为:     就行了。
  • XML之Schema验证

    千次阅读 2012-05-12 17:41:09
    XML Schema是用一套预先规定的XML元素和属性创建的,这些元素和属性定义了XML文档的结构和内容模式。XML Schema规定XML文档实例的结构和每个元素/属性的数据类型。 为什么要用Schema DTD 的局限性 1.DTD不遵守...
  • WSDL and Schema Parser

    千次阅读 2006-01-13 15:21:00
    http://www.codeproject.com/cs/webservices/wsdlparser.aspWSDL and Schema ParserBy Thanh Dao Modeling WSDL and XML schema on a TreeView control and generating XML document from XML schemas. 
  • Json schema

    千次阅读 2016-08-28 14:32:12
    背景:复杂的AJAX应用程序可以与数百个不同的JSON服务进行交互,因此,引入对客户端验证的需求。在处理校验问题方面有着很多的工具,但是通常可以将它们归为以下几类:* * 判断数据是否已被正确格式化 ...
  • Schema详解

    千次阅读 2019-06-19 17:46:49
    Schema,即XML Schema,XSD (XML Schema Definition)是W3C于2001年5月发布的推荐标准,指出如何形式描述XML文档的元素。XSD是许多XML Schema 语言中的一支。XSD是首先分离于XML本身的schema语言,故获取W3C的推荐...
  • Schema学习

    2016-09-30 14:53:33
    1.Schema介绍 XML Schema 是基于 XML 的 DTD 替代者。可描述 XML 文档的结构。 XML Schema 语言也可作为 XSD(XML Schema Definition)来引用。 XML Schema 本身也是一种XML构造,它用来描述[哪个元素,在什么...

空空如也

1 2 3 4 5 ... 20
收藏数 108,257
精华内容 43,302
关键字:

schema