SkyDB存储引擎介绍
SkyDB架构
SkyDB使用多个线程来保证高并发场景,其中最主要使用两个工作线程来处理存储结构中的信息。一个线程,称为“Porpoise”线程,专注于将已提交的数据更改从SkyDB日志移动到数据页面,并将索引更改与永久索引数据合并。第二个线程处理页面缓存的定期刷新,并在记录缓存中回收分配的空间。
配置参数
您可以使用SHOW VARIABLES获取与SkyDB相关的变量列表:
创建SkyDB表空间
在SkyDB中,一个数据库中的所有数据都存储在MySQL目录结构中的表空间文件中。默认情况下,将使用skydb_user表空间文件来存储表,无论表的MySQL数据库模式如何。
SkyDB还支持命名表空间,允许您将表存储在与默认SkyDB存储文件不同的特定文件中。当在服务器中启用SkyDB存储引擎时,会自动创建三个SkyDB表空间。这些表是:
- skydb_user:用于存储用户表。
- skydb_system:用于存储系统表。
- skydb_temp:用于存储临时表。
所有表空间共享相同的日志文件、内存和线程。事务可以在所有表空间之间透明运行。表空间与其相关的数据库/模式之间没有内在关系。
要创建新的表空间,请使用CREATE TABLESPACE语句:
CREATE TABLESPACE tablespace_name
ADD DATAFILE 'file_name'
ENGINE [=] SkyDB
SkyDB还会创建两个额外的文件,它们包含SkyDB流日志的磁盘副本。日志文件的名称分别为skydb_master.cl1和skydb_master.cl2。
在SkyDB中创建表和索引
SkyDB支持MySQL支持的所有标准列数据类型。
要创建使用SkyDB引擎的表,请在CREATE TABLE语句中使用ENGINE = SkyDB选项:
CREATE TABLE names (
id INT,
fname VARCHAR (20),
lname VARCHAR (20)
) ENGINE=SkyDB
索引可以使用所有标准方法创建;例如,您可以显式地在列上指定索引:
CREATE TABLE ids (
id INT,
INDEX (id)
) ENGINE=SkyDB
将其作为主键的一部分生成:
CREATE TABLE ids (
id INT,
PRIMARY KEY (id)
) ENGINE=SkyDB
或者,您可以创建多键和多个索引:
CREATE TABLE t1 (
id INT NOT NULL,
id2 INT NOT NULL,
id3 INT NOT NULL,
name CHAR(30),
PRIMARY KEY (id,id2),
INDEX index_id3 (id3)
) ENGINE=SkyDB
在特定表空间中创建表,请添加TABLESPACE定义:
CREATE TABLE names (id INT, fname VARCHAR (20), lname VARCHAR (20))
TABLESPACE my_big_tables ENGINE=SkyDB
您可以使用ALTER TABLE更改给定表的表空间,SkyDB将把表数据移动到新表空间:
ALTER TABLE names TABLESPACE my_small_tables
当表空间为空(即不再包含任何表)时,可以使用DROP TABLESPACE删除表空间:
DROP TABLESPACE my_big_tables ENGINE=SkyDB
目前,您无法使用ALTER TABLESPACE更改表空间。
获取性能诊断
SkyDB将内部性能诊断信息导出到全局INFORMATION_SCHEMA表。目前,SkyDB在以下表中提供信息:
要获取诊断信息,您可以运行标准的SELECT语句。根据您选择的INFORMATION_SCHEMA表,信息可能以数据库或表为基础提供。如果信息基于表名,并且该表存储在唯一的表空间中,则表空间名称将在表名中引用。例如,您可以从skydb_tablespace_io表中获取SkyDB数据库的I/O统计信息:
Disqus comments are disabled.