Mysql 商品多特征数据库设计及查询方式?

Mysql 商品多特征数据库设计及查询方式?,第1张

在设计Mysql商品特征数据库时,我们可以采用类似“键值对”的方式进行存储。具体而言,我们可以设计以下两个表:

1 商品表

商品ID 商品名称

1    商品1  

2    商品2  

3    商品3 

请点击输入图片描述

这样,我们可以在商品表中存储每个商品的基本信息,而在特征表中存储每个商品的特定特征。对于查询特定特征的商品,我们可以使用如下的SQL语句:

SELECT 商品表.商品名称

FROM 商品表

INNER JOIN 特征表 ON 商品表.商品ID = 特征表.商品ID

WHERE 特征表.特征名称 = '风格' AND 特征表.特征值 = '新中式'

这个SQL查询语句会返回所有风格为“新中式”的商品名称。我们可以根据需要修改特征名称和特征值来查询不同的特定特征商品。

Log File物理结构

从 ib_logfile0和 ib_logfile1这两个文件的物理结构可以看出,在Log Header部分还是有些许差异的, ib_logfile0会多一些额外的信息,主要是checkpoint信息。

并且每个Block的单位是512字节,对应到磁盘每个扇区也是512字节,因此redo log写磁盘是原子写,保证能够写成功,而不像index page一样需要double write来保证安全写入。

我们依次从上到下来看每个Block的结构

Log File Header Block

Log Goup ID,可能会配置多个redo组,每个组对应一个id,当前都是0,占用4字节

Start LSN,这个redo log文件开始日志的lsn,占用8字节

Log File Number,总是为0,占用4字节

Created By,备份程序所占用的字节数,占用32字节

另外在ib_logfile0中会有两个checkpoint block,分别是 LOG_CHECKPOINT_1/ LOG_CHECKPOINT_2,两个记录InnoDB Checkpoint信息的字段,分别从文件头的第二个和第四个block开始记录,并且只在每组log的第一个文件中存在,组内其他文件虽然没有checkpoint相关信息,但是也会预留相应的空间出来。这里为什么有两个checkpoint的呢?原因是设计为交替写入,避免因为介质失败而导致无法找到可用的checkpoint的情况。

Log blocks

请点击输入图片描述

log block结构分为日志头段、日志记录、日志尾部

Block Header,占用12字节

Data部分

Block tailer,占用4字节

Block Header

这个部分是每个Block的头部,主要记录的块的信息

Block Number,表示这是第几个block,占用4字节,是通过LSN计算得来的,占用4字节

Block data len,表示该block中有多少字节已经被使用了,占用2字节

First Rec offet,表示该block中作为第一个新的mtr开始的偏移量,占用2字节

Checkpoint number,表示该log block最后被写入时的检查点的值,占用4字节

都是很基础的sql语句

创建表用create table

插入数据用insert into xxx values

查询数据用select 字段 from 表 where 条件

排序:升序用asc 降序用desc


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

原文地址:https://54852.com/sjk/6903452.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存