MySQL简介
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle公司,MySQL是最流行的关系型数据库管理系统之一,在WEB应用方面,MySQL是最好的RDBMS(Relational Database Management System,关系数据库管理系统)应用软件之一。
CentOS系统下MySQL的安装
1、下载MySQL安装包
访问MySQL官网(https://dev.mysql.com/downloads/mysql/)下载对应版本的Linux安装包。
2、解压安装包
将下载好的安装包上传到CentOS服务器,然后使用以下命令解压:
tar -zxvf mysql-8.0.26-linux-glibc2.12-x86_64.tar.gz
3、安装MySQL
进入解压后的目录,执行以下命令进行安装:
cd mysql-8.0.26-linux-glibc2.12-x86_64 sudo yum localinstall mysql-community-server*.rpm
4、启动MySQL服务
sudo systemctl start mysqld
5、设置开机启动
sudo systemctl enable mysqld
优化MySQL性能
1、配置文件调整
MySQL的配置文件my.cnf存放在/etc/my.cnf或/etc/mysql/my.cnf,可以对其进行一些调整以提高性能。
[mysqld] 设置缓冲区大小,缓冲区用于缓存表和索引数据,提高查询速度 innodb_buffer_pool_size=1G 设置最大连接数,避免因连接过多导致的性能问题 max_connections=2000 设置字符集,避免因字符集不一致导致的性能问题 character-set-server=utf8mb4
2、修改表结构
合理的表结构可以提高查询效率,为经常查询的字段添加索引:
ALTER TABLEuser
ADD INDEXidx_username
(username
);
3、优化SQL语句
避免使用SELECT *,而是只查询需要的字段;尽量避免使用子查询,可以使用JOIN替代;尽量避免使用LIKE操作符等。
4、分区表和分片表
对于大数据量的表,可以使用分区表和分片表来提高查询效率,创建一个按照时间范围分区的表:
CREATE TABLEorder
(id
int(11) NOT NULL AUTO_INCREMENT,order_no
varchar(32) NOT NULL,create_time
datetime NOT NULL, PRIMARY KEY (id
,create_time
), // 按照id和create_time进行联合分区,分为两个分区区间:(0, TIMESTAMP '2022-01-01')和(TIMESTAMP '2022-01-01', MAXVALUE) KEYidx_order_no
(order_no
) USING BTREE, -在每个分区内建立索引,提高查询速度 KEYidx_create_time
(create_time
) USING BTREE // 在每个分区内建立索引,提高查询速度 ) PARTITION BY HASH(id
,create_time
) PARTITIONS 2; -将数据分为两个分区区间进行存储,提高查询速度和并发性能,HASH算法保证了相同id和create_time的数据会被存储在同一台机器上,PARTITIONS定义了分区的数量,如果不指定PARTITIONS值或者指定的值小于实际的分区数量,那么所有未被使用的分区将会被删除,如果指定的值大于实际的分区数量,那么多余的分区将不会被创建,这个例子中我们使用了HASH算法将数据分为两个区间进行存储,这样可以保证相同id和create_time的数据会被存储在同一台机器上,从而提高了数据的可用性和查询速度,由于数据是分散在不同的机器上的,所以也提高了并发处理能力,通过增加分区的数量也可以进一步提高查询效率,但是需要注意的是,增加分区数量会增加系统的复杂性,并且也会占用更多的磁盘空间,因此需要根据实际情况进行权衡。
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/192157.html