Mysql配置文件my(2)

  • 生产环境my.cnf配置示例

  • MYSQL配置最佳实践(规范)

    • 基础规范
  • 命名规范

  • 表设计规范

  • 字段设计规范

  • 索引设计规范

  • SQL使用规范

生产环境my.cnf配置示例

=================================================================================

硬件:内存32G

innodb_file_per_table = 1 打开独立表空间(单独存放)

#MySQL 服务所允许的同时会话数的上限,经常出现

Too Many Connections的错误提示,则需要增大此值

max_connections = 8000

back_log = 300

#back_log 是操作系统在监听队列中所能保持的连接数

max_connect_errors = 1000

#每个客户端连接最大的错误允许数量,当超过该次数,MYSQL服务器将禁止此主机的连

接请求,直到MYSQL服务器重启或通过flush hosts命令清空此主机的相关信息

open_files_limit = 10240

#所有线程所打开表的数

max_allowed_packet = 32M

#每个连接传输数据大小.最大1G,须是1024的倍数,一般设为最大的BLOB的值

wait_timeout = 10

#指定一个请求的最大连接时间

sort_buffer_size = 16M

#排序缓冲被用来处理类似ORDER BY以及GROUP BY队列所引起的排序

join_buffer_size = 16M

#不带索引的全表扫描.使用的buffer的最小值

query_cache_size = 128M

#查询缓冲大小

query_cache_limit = 4M

#指定单个查询能够使用的缓冲区大小,缺省为1M

transaction_isolation = REPEATABLE-READ

设定默认的事务隔离级别

thread_stack = 512K

线程使用的堆大小. 此值限制内存中能处理的存储过程的递归深度和SQL语句复杂性,

此容量的内存在每次连接时被预留.

log-bin

二进制日志功能

binlog_format=row

#二进制日志格式

innodb_buffer_pool_size = 24G

#InnoDB使用一个缓冲池来保存索引和原始数据, 可设置这个变量到物理内存大小的80%

innodb_file_io_threads = 4

#用来同步IO操作的IO线程的数量

innodb_thread_concurrency = 16

#在InnoDb核心内的允许线程数量,建议的设置是CPU数量加上磁盘数量的两倍

innodb_log_buffer_size = 16M

用来缓冲日志数据的缓冲区的大小

innodb_log_file_size = 512M

在日志组中每个日志文件的大小

innodb_log_files_in_group = 3

在日志组中的文件总数

innodb_lock_wait_timeout = 120

SQL语句在被回滚前,InnoDB事务等待InnoDB行锁的时间

long_query_time = 2

#慢查询时长

log-queries-not-using-indexes

#将没有使用索引的查询也记录下来

MYSQL配置最佳实践(规范)

==================================================================================

高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现“增机器就加性能”

参考:

阿里巴巴Java开发手册

58到家数据库30条军规解读

基础规范


(1)必须使用InnoDB存储引擎

解读:支持事务、行级锁、并发性能更好、CPU及内存缓存页优化使得资源利用率更高

(2)使用UTF8MB4字符集

解读:万国码,无需转码,无乱码风险,节省空间,支持表情包及生僻字

(3)数据表、数据字段必须加入中文注释

解读:N年后谁知道这个r1,r2,r3字段是干嘛的

(4)禁止使用存储过程、视图、触发器、Event

解读:高并发大数据的互联网业务,架构设计思路是“解放数据库CPU,将计算转移到服务层”,并发量

大的情况下,这些功能很可能将数据库拖死,业务逻辑放到服务层具备更好的扩展性,能够轻易实现

“增机器就加性能”。数据库擅长存储与索引,CPU计算还是上移吧!

(5)禁止存储大文件或者大照片

解读:为何要让数据库做它不擅长的事情?大文件和照片存储在文件系统,数据库里存URI多好。

命名规范


(6)只允许使用内网域名,而不是ip连接数据库

(7)线上环境、开发环境、测试环境数据库内网域名遵循命名规范

业务名称:xxx

线上环境:xxx.db

开发环境:xxx.rdb

测试环境:xxx.tdb

从库在名称后加-s标识,备库在名称后加-ss标识

线上从库:xxx-s.db

线上备库:xxx-sss.db

(8)库名、表名、字段名:小写,下划线风格,不超过32个字符,必须见名知意,禁止拼音英文混用

(9)库名与应用名称尽量一致,表名:t_业务名称_表的作用,主键名:pk_xxx,非唯一索引名:idx_xxx,唯

一键索引名:uk_xxx

表设计规范


(10)单实例表数目必须小于500

单表行数超过500万行或者单表容量超过2GB,才推荐进行分库分表。

说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表

(11)单表列数目必须小于30

(12)表必须有主键,例如自增主键

解读:

a)主键递增,数据行写入可以提高插入性能,可以避免page分裂,减少表碎片提升空间和内存的使用

b)主键要选择较短的数据类型, Innodb引擎普通索引都会保存主键的值,较短的数据类型可以有效的

减少索引的磁盘空间,提高索引的缓存效率

c) 无主键的表删除,在row模式的主从架构,会导致备库夯住

(13)禁止使用外键,如果有外键完整性约束,需要应用程序控制

解读:外键会导致表与表之间耦合,update与delete操作都会涉及相关联的表,十分影响sql 的性能,

最后

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数Java工程师,想要提升技能,往往是自己摸索成长,自己不成体系的自学效果低效漫长且无助。

因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!
…(img-NsbMPzL9-1715852457345)]

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,不论你是刚入门Java开发的新手,还是希望在技术上不断提升的资深开发者,这些资料都将为你打开新的学习之门!

如果你觉得这些内容对你有帮助,需要这份全套学习资料的朋友可以戳我获取!!

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且会持续更新!

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值