当前位置:首页 » 数据仓库 » mysql数据库设计模版
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

mysql数据库设计模版

发布时间: 2023-08-21 12:18:36

㈠ MYsql数据库的物理设计都包括哪些内容,怎么设计

Log File物理结构

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字节

  • ㈡ 如何设计一个能够高效查询的千万级MySQL数据库

    我们先探讨非高并发量的实现。

    对于查询频次较高的字段,加上索引。

    加索引注意事项:1.对那些字符内容较长的最好不要加索引2.按照官方文档,单表加的索引不要超过16个,索引的长度不要超过256个字节。随意加索引,会给数据维护增知腊加负担

    其实,可以引入分区。

    分区注意事项:1.常见的分区类型有range,list,hash,key等。用的比较多的就是range分区。2.对于初始建立索引的时候,我们往往会忽视一个前提条件,导致添加失败报错。这里的前提是,如果表是有主键的,分区的键和主键不是同一个,那么分区的键也必须是主键。

    引入分区后,数据写入时,数据库会自动判断写入哪个分区

    对于誉慎并发量较高的,我们除了做上搭虚滑面的操作外,就要考虑分库分表或者采用一主多从的方式。

    未来我相信这类问题需要采用NewSQl这类数据库来解决,如TiDb等,此时,我们将不必考虑数据分区的问题,而且可以做到数据水平无限扩展,和热点数据的动态分布。

    ㈢ 如何设计一个能够高效查询的千万级MySQL数据库

    首先要确定你的目标,所谓千万级是每秒千万次查询还是千万条记录的数据库,前者是一个极其复杂的,这个不是光告mysql能解决的,我想不是前者,而后者却是很简单的一件事,前提是定义高效,定义两个指标:

    1,每秒查询的次数是多少

    2,每次查询时长

    确定好以后再考虑以下几个因素的优化

    1,存储的类型,SSD比普通磁盘的随机读写能力可以提高不少禅嫌凯,一般2到3个数量级,还要看索引和数据块的大小,比较复杂

    2,先择RAID类型,如果选raid0和raid10可以提升近似1倍的速度

    3,使用高带宽的网速,可以减少网络传输延迟,用10g的光纤比1g的电缆理论上可以提升1个数量级的吞吐量,尤其对大数据据量的结果集特别有效

    4,合理的索引,带条件的检索字段加上索引

    5,用大宽表,尽可能减少多表关联查询,用空间换时间吧

    6,_用主从的集群,基本上查询的并发量和服务器的数量成正比的

    7,使贺唤用缓存,如memcached,尤其对静态数据提升尤其明显

    8,合理选择数据库字段的类型,用定长字字,不要用变长的,如定长的int,char,decimal类型,别用varchar,text等

    9,给数据库配置更大的内存

    10,检查下瓶颈在不在CPU,如果查询复杂,换个更高配置的服务器

    总的原刚就是,尽可能用内存替代碰盘提升IO速度,提高网络和CPU的配置以减少查询时间;尽可能提升网络速度,内存和主机的数量以提高并发


    我们先探讨非高并发量的实现。

    对于查询频次较高的字段,加上索引。

    加索引注意事项:

    1.对那些字符内容较长的最好不要加索引

    2.按照官方文档,单表加的索引不要超过16个,索引的长度不要超过256个字节。

    随意加索引,会给数据维护增加负担

    其实,可以引入分区。

    分区注意事项:

    1.常见的分区类型有range,list,hash,key等。用的比较多的就是range分区。

    2.对于初始建立索引的时候,我们往往会忽视一个前提条件,导致添加失败报错。

    这里的前提是,如果表是有主键的,分区的键和主键不是同一个,者宴那么分区的键也必须是主键。

    引入分区后,数据写入时,数据库会自动判断写入哪个分区

    对于并发量较高的,我们除了做上面的操作外,就要考虑分库分表或者采用一主多从的方式。

    未来我相信这类问题需要采用NewSQl这类数据库来解决,如TiDb等,此时,我们将不必考虑数据分区的问题,而且可以做到数据水平无限扩展,和热点数据的动态分布。