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

mysql数据库扩展,如何扩展mysql数据库表空间

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

本文内容列表:

  • 1.Mysql数据库动态扩容方案
  • 2.超详细的MySQL数据库优化
  • 3.如何扩展MySQL共享表空间

mysql数据库动态扩容计划

加入两台MySQL服务器。之前的规则是key%2 == 0进入库1,key%2 == 1进入库2。在扩展计划中,MySQL配置信息可以更改为:使用库1的master和slave作为两台机器,库2也是如此,这样key%4 == 0和==2进入库1,key%4 == 1或3进入库2。然后进行数据清理工作。

超详细的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 中间表

对于查询大量Join的表,可以创建中间表,以减少查询过程中Join造成的耗时。

2.1.6 添加冗余字段

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

2.1.7 分析表、检查表、优化表

分析表主要分析表中关键字的分布情况,检查表主要检查表是否有错误,优化表主要排除删除或更新造成的表空间。浪费。

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

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

选项仅对 MyISAM 有效,共 5 个参数值:

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共享表空间

每个表都会生成并存储在独立的文件中。每个表都有一个.frm表描述文件和一个.ibd文件。

该文件包含单个表中的数据内容和索引内容。默认情况下,存储位置也在表位置。

版权声明

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

热门