Code前端首页关于Code前端联系我们

包括mysql数据库设计,MySQL数据库设计与实现

terry 2年前 (2023-09-30) 阅读数 38 #Mysql
文章标签 Mysql

本文内容列表:

  • 1. MYSQL数据库的物理设计包括哪些内容以及如何设计?
  • 2.超详细的MySQL数据库优化
  • 3.北大青鸟设计培训:Mysql数据库设计与优化?
  • 4、有什么好用的mysql数据库设计工具吗?
  • 5.Mysql数据库设计

MYSQL数据库的物理设计包括哪些内容以及如何设计?

日志文件的物理结构

从ib_logfile0和ib_logfile1两个文件的物理结构可以看出,日志头存在一些差异。 ib_logfile0 有一些额外的功能。信息,主要是关卡信息。

而且每个Block单元是512字节,对应磁盘的每个扇区也是512字节,所以将重做日志写入磁盘是保证写入成功的原子写入,不像寄存器页需要双重写入。保证安全写入。

我们从上到下看每个Block结构

日志文件头Block

日志组ID,可以设置多个重做组,每个组对应一个ID,目前都是0,占用4个字节

运行LSN,lsn,从这个重做日志文件开始记录的地方,占用8个字节

日志文件号,始终为0,占用4个字节

Creator,备份占用的分区数。 ,占用32字节

另外,ib_logfile0有两个检查点块,分别是LOG_CHECKPOINT_1/LOG_CHECKPOINT_2,从文件头的第二个和第四个字段开始,这两个字段存储InnoDB检查点信息。该块开始记录并且仅存在于每个日志组的第一个文件中。虽然该组中的其他文件没有与检查点相关的信息,但保留了相应的空间。这里为什么有两个检查站?这是因为它是为交替写入而设计的,以避免由于介质故障而找不到空闲检查点的情况。

日志块

单击输入图像的描述Block尾部,占用 4 个字节

Block头

这部分是每个Block的头部,主要存储区块的信息

Block编号,表示是哪个块,占用 4 字节 LSN,它通过LSN 4字节计算。 bytes

检查点编号,表示日志块最后写入时的检查点值,占4个字节

超详细的MySQL数据库优化

一方面,数据库优化的目的是找出系统瓶颈,提高MySQL数据库的整体性能。另一方面,需要合理的设计和参数调整,在提高用户响应速度的同时,也尽可能节省系统资源。 ,让系统提供更高的负载。

1. 优化概述

2. 优化

作者将优化分为两类,软优化和硬优化。软优化通常涉及使用数据库。 ,而硬优化就是利用服务器硬件和参数设置。

2.1 软优化

2.1.1 查询语句优化

1. 首先,我们可以使用 EXPLAIN 或 DESCRIBE 命令(简称:DESC)来分析查询语句执行信息。

2. 示例:

显示:

显示查询数据的索引、读取次数等信息。

2.1.2 优化子查询

在 MySQL 中,尝试使用 JOIN 代替子查询。由于子查询需要嵌套查询,因此嵌套查询会创建临时表。创建和删除临时表的系统开销较高,而连接查询不会创建临时表。因此,效率比嵌套子查询要高。

2.1.3 使用索引

索引是提高数据库查询速度的最重要方法之一。关于索引更详细的介绍,可以参考作者的MySQL数据库索引文章这里节省使用索引时的三个主要注意事项:

2.1.4 表的分解

对于字段较多的表,如果某些字段较少经常使用的,应该将它们分开,形成一个新表。

2.1.5 中间表

对于需要大量连接的表,可以创建中间表,以减少查询时产生的耗时连接。

2.1.6 添加冗余字段

与创建中间表类似,添加冗余以减少连接查询。

2.1.7 分析表、控制和优化表

分析表主要分析表中关键字的分布情况,控制表主要检查表是否存在错误,优化表主要消除因删除或更新而造成的表空间浪费。

1. 分析表:使用 ANALYSIS 关键字,例如 ANALYSIS TABLE 用户;

2. 检查表:使用 CHECK 关键字,例如 CHECK TABLE user [选项]

选项仅对 MyISAM 有效总共五个参数值:

3. 表优化:使用 OPTIMIZE 关键字,如 OPTIMIZE [LOCAL|NO_WRITE_TO_BINLOG] TABLE user;

LOCAL|NO_WRITE_TO_BINLOG 都表示不写入日志。优化表仅适用于 VARCHAR、BLOB 和 TEXT。可以使用 OPTIMIZE TABLE 语句消除文件碎片。运行时过程中添加只读锁。

2.2 硬优化

2.2.1 三件套硬件设置

1.配置多核高频CPU,多核可以跑多线程。

2、配置大内存,增加内存以增加缓存大小,从而减少磁盘I/O时间,提高响应速度。

3.配置快速磁盘或合理分配磁盘:快速磁盘可以提高I/O,分布式磁盘可以提高并行操作的能力。

2.2.2 优化数据库参数

优化数据库参数可以提高资源利用率,从而提高MySQL服务器性能。 MySQL服务配置参数都在my.cnf或my.ini文件中,下面列出了对性能影响较大的几个参数。

2.2.3 数据库和表共享

由于数据库压力太大,第一个问题就是在高峰期,数据库负载过高,导致系统性能下降。这会影响性能。另外,如果你的数据库因为压力过大而崩溃了怎么办?所以目前需要将系统分库分表+读写分离,即将数据库拆分为多个数据库,部署到多个数据库服务上,然后作为主库来处理写请求。然后,每个父库链接至少一个子库,并且子库处理读取请求。

2.2.4 缓存集群

随着用户数量的增加,您可以继续添加机器。例如,如果在系统级别不断添加机器,则可以处理更大的并发请求。然后,随着数据库层面的写并发越来越高,数据库服务器进行横向扩展,通过分库、表共享的方式进行机器横向扩展。随着数据库层面的读并发越来越高,容量不断增加,子数据库也越来越多。但这里有一个很大的问题:数据库本身实际上并不是用来传输大并发查询的,所以一般一台数据库机器的并发量在每秒几千的量级,而且数据库使用的机器配置都比较高,相对来说,机器价格昂贵,性价比非常高。如果只是添加机器,其实是错误的。因此,高并发架构中通常会包含缓存。缓存系统旨在支持高并发。因此,单机的并发量为每秒数万甚至数十万,高并发的承载能力比数据库系统大一到两个数量级。因此,对于少写多读的查询,可以根据系统的业务特点,充分部署缓存集群。具体来说,在写入数据库时​​,同时将数据的副本写入缓存集群,然后使用缓存集群来转发大部分读请求。在这种情况下,缓存集群可以使用更少的机器资源来承载更多的并发。

一个完整、复杂的高层系统架构肯定包括:各种复杂的自研基础设施系统。各种精美的建筑设计。这就是为什么一篇小文章可以作为创意产生者产生最大的影响,但对于数据库优化创意来说也就这样了。

北大青鸟设计培训:MySQL数据库设计与优化?

在JAVA开发中,我们还要学习数据库。以下文章涵盖数据库设计和实现。那么话不多说,让我们开始学习Java培训机构课程吧!数据库设计 数据库设计是基础,数据库优化基于设计。

一个好的数据库必须有好的设计。

数据库设计的目的是为用户和各种应用系统提供信息基础设施和高效的工作环境。

数据库的三大范式第一个范式1NF:所有字段都应该是原子的,即数据库表的每一列都是一个不可分割的原子数据单元,不能是集合、数组等非原子数据、记录等对象。

第二范式2Nf:第二范式是在第一范式的基础上向前迈进的一步。

另一种常见形式必须确保数据库表中的每一列都与主键相关联,而不仅仅是主键的特定部分(大多数是共享主键)。

这意味着一个数据库表中只能存储一种类型的数据,同一个数据库表中不能存储多种类型的数据。

第三范式3Nf:所有字段必须与主键直接相关,而不是间接相关。

也可以理解为字段不应该与其他非主键字段相关。笔记。这三个范式应该尽量遵循,没有必要墨守成规。这只是我们可以设计表格的目的。越接近这些范式,领域就越接近。尽可能减少冗余。但有时也可以根据实际需要稍微剧透一下。然而,允许违反第三范式,但不允许违反第一范式。数据库设计阶段 需求分析阶段 理解并准确分析用户需求(包括数据和处理)。

是整个设计过程的基础,也是最困难、最耗时的一步。

概念结构设计阶段是整个数据库设计的关键——设计数据库的E-R模型图,确认所需信息的正确性和完整性 Entity_Relationship---实体之间的关系 一对一 一对一-many 多对一

有没有什么好用的mysql数据库设计工具

推荐以下两种:

1.Navcat:

Navicat 是一套快速、可靠且经济实惠的数据库管理工具,旨在简化数据库管理并降低系统管理成本。它旨在满足数据库管理员、开发人员和中小型企业的需求。 Navicat 采用直观的图形用户界面构建,允许您以安全且简单的方式创建、组织、访问和共享信息。

Navicat 享誉全球,并受到世界各地大公司、政府机构和教育机构的广泛信赖。也是各行各业从业者日常必不可少的工作伙伴。自 2001 年以来,Navicat 在全球的下载量已超过 2,000,000 次,拥有超过 70,000 名用户。 《财富》超过 100 家财富 500 强公司也使用 Navicat。

2。 MySQL Workbench:

MySQL Workbench 是一个图形数据库设计工具,它将 SQL 开发、管理、数据库设计、创建和维护集成到单个开发环境中。它是 fabFORCE.net 的 DBDesigner 4 的后续版本,并取代了 MySQL GUI 工具包。当前版本是 5.2,最旧版本是 5.0。这强调了一个事实:MySQL Workbench 是作为 DBDesigner4 的继承者而开发的。

Mysql数据库设计

简单用户表tb_user:

用户名,用户名

用户数据表 tb_userinfo

用户 ID、邮箱、网站、电话、地址

分离用户信息的目的是保证经常请求的数据放在一张表中,其他信息放在另一张表中

论坛主题表 tb_bbs

bbs、username、title、ip、replycount、replyuserid、createtime、lastreplytime

论坛内容标签 tb_bbs_content(此表可以根据 bbsid 单独保存在表中)

bbsid、content;

论坛回复表tb_bbs_reply(该表可以根据bbsid单独存放在表中)

回复id、bbsid、用户id、内容、回复时间、ip

版权声明

本文仅代表作者观点,不代表Code前端网立场。
本文系作者Code前端网发表,如需转载,请注明页面地址。

热门