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