DBA工作经验总结

目录

一、MySQL8.0创建一张规范的表

1.表、字段全采用小写

2.int类型不再加上最大显示宽度

3.每张表必须显式定义自增int类型的主键

4.建表时增加comment来描述字段和表的含义(防止以后忘记)

5.建议包含create_time和update_time字段

6.核心业务增加记录标记字段

7.用尽量少的存储空间来存储一个字段的数据

8.存储精确浮点数必须使用DECIMAL

9.尽量能不使用TEXT、BLOB类型

10.添加合适的索引增加查询速度

11.字符集建议使用utf8mb4

12.存储引擎建议使用InnoDB

13.但表字段数目建议小于30

二、MySQL8.0需要调整的参数

1.缓冲池大小和数量

2.最大连接客户端数(默认151,通常不够用)

3.Binlog相关参数

4.数据目录

5.服务ID

6.只读参数

7.双一参数

8.开启GTID

9.采用独立表空间

10.不区分大小写

11.IO操作数

12.重做日志相关

13.慢查询相关参数

14.连接超时参数

15.事务隔离级别

16.InnoDB行锁等待时间

17.死锁信息记录在错误日志里


一、MySQL8.0创建一张规范的表

例:

CREATE TABLE student_info (
`id` INT  NOT NULL AUTO_INCREMENT COMMENT '主键',
`stu_name` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '姓名',
`stu_class` VARCHAR(10) NOT NULL DEFAULT '' COMMENT '班级',
`stu_num` INT NOT NULL DEFAULT '0' COMMENT '学号',
`stu_score` SMALLINT UNSIGNED NOT NULL DEFAULT '0' COMMENT '总分',
`tuition` DECIMAL(5, 2) NOT NULL DEFAULT '0' COMMENT '学费',
`phone_number` VARCHAR(20) NOT NULL DEFAULT '0' COMMENT '电话号码',
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '记录创建时间',
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '记录更新时间',
`status` TINYINT NOT NULL DEFAULT '1' COMMENT '1代表记录有效,0代表记录无效',
PRIMARY KEY (`id`),
UNIQUE KEY uniq_stu_num (`stu_num`),
KEY idx_stu_score (`stu_score`),
KEY idx_update_time_tuition (`update_time`, `tuition`)
) ENGINE = INNODB charset = utf8mb4 COMMENT '学生信息表';

1.表、字段全采用小写

https://img1.sycdn.imooc.com/climg/65fe44d60938d19c07800178.jpg

(0 区分大小写,1 不区分大小写)

2.int类型不再加上最大显示宽度

https://img1.sycdn.imooc.com/climg/65fe460209e6e6ba11730449.jpg

3.每张表必须显式定义自增int类型的主键

如果innodb没有显示定义主键,可能会选择唯一索引作为主键,唯一索引在写入的过程可能不是递增的,写入数据时可能会导致数据页频繁分裂,从而导致写入效率低和页空间浪费。另外主键能保证每一行的唯一性,在日常使用也会很方便,提升查询效率、归档处理。

4.建表时增加comment来描述字段和表的含义(防止以后忘记)

https://img1.sycdn.imooc.com/climg/65fe47b709f7486b13830406.jpg

5.建议包含create_time和update_time字段

用于审计和跟踪,方便查看创建更新、时间,分析问题方便。

数据归档也可以根据这两个字段处理。

6.核心业务增加记录标记字段

https://img1.sycdn.imooc.com/climg/65fe493009937e2513630410.jpg

7.用尽量少的存储空间来存储一个字段的数据

例:能用int就不varchar/char, 能用tinyint就不用int.

8.存储精确浮点数必须使用DECIMAL
9.尽量能不使用TEXT、BLOB类型

浪费磁盘空间,影响性能

如果某一个字段必须使用,建议单独建一张表

10.添加合适的索引增加查询速度
11.字符集建议使用utf8mb4

如果应用程序使用多种语言,使用utf8mb4可以防止乱码,支持多种语言

12.存储引擎建议使用InnoDB

绝大多数情况使用:​主持事务、行锁、在线备份、支持MVCC多版本并发控制

13.但表字段数目建议小于30

列越多,越影响性能,结构变得越复杂,不利于维护和管理

二、MySQL8.0需要调整的参数

###配置文件举例
[client]
port        = 3306
socket      = /tmp/mysql.sock

[mysqld]
port    = 3306
socket  = /tmp/mysql.sock

##  dir set
datadir           = /data/mysql/data
innodb_data_home_dir   = /data/mysql/data
innodb_log_group_home_dir = /data/mysql/data
log-bin           = /data/mysql/binlog/mysql-bin
max_binlog_size   = 1G

log_bin_index             = /data/mysql/binlog/mysql-bin.index  
relay-log         = /data/mysql/binlog/mysql-relay-bin
tmpdir            = /data/mysql/tmpdir
slow_query_log_file   = /data/mysql/log/mysql-slow.log
general_log_file   = /data/mysql/log/mysql-general.log
log-error         = /data/mysql/log/mysql.err

## slave and binlog
server_id = 6666             
skip-slave-start = 0       
read_only = 0          
binlog_format = row             
log_slave_updates = 1
master_info_repository = table
relay_log_info_repository = table
relay_log_purge = 1
relay_log_recovery = 1
sync_binlog = 100                 

binlog_cache_size = 1M
binlog_expire_logs_seconds = 2592000
log_bin_trust_function_creators = 1         
slave_net_timeout=60                
#binlog_error_action="IGNORE_ERROR"     

innodb_autoinc_lock_mode=1          

## 
back_log = 200
bulk_insert_buffer_size = 8M            
#character-set-server = utf8
lower_case_table_names = 1              

## 基线
local-infile = off
skip-networking = off
skip-name-resolve = on 

## connect
max_allowed_packet = 32M
max_connect_errors = 1000
max_connections = 1000
wait_timeout = 3600            
interactive_timeout = 3600          

table_open_cache = 4096
thread_cache_size =  64
thread_stack = 192K
transaction_isolation = REPEATABLE-READ     # 
pid-file = mysql.pid

## slow
slow_query_log = 1              
long_query_time = 1
log_slow_admin_statements
log_queries_not_using_indexes = 0
slow_launch_time = 1
read_buffer_size = 4M               
read_rnd_buffer_size = 8M           
sort_buffer_size = 8M
join_buffer_size = 32M
tmp_table_size = 128M
max_heap_table_size = 128M

default_storage_engine = innodb
explicit_defaults_for_timestamp = on           

## innodb
innodb_buffer_pool_size = 1G                   
innodb_max_dirty_pages_pct = 80         
innodb_thread_concurrency = 8           
innodb_buffer_pool_instances = 2        
innodb_flush_log_at_trx_commit = 2      
innodb_read_io_threads = 8          
innodb_write_io_threads = 4         
innodb_io_capacity = 1000
innodb_io_capacity_max = 2000
innodb_lru_scan_depth = 1024
innodb_use_native_aio = 1
innodb_flush_neighbors = 1
innodb_buffer_pool_load_at_startup = 1
innodb_buffer_pool_dump_at_shutdown = 1

innodb_data_file_path=ibdata:1G:autoextend
innodb_log_files_in_group = 3
innodb_log_file_size = 2G
innodb_file_per_table = 1 

innodb_flush_method = O_DIRECT
innodb_strict_mode = 1
innodb_lock_wait_timeout = 30
innodb_log_buffer_size = 16M
innodb_adaptive_flushing = 1
innodb_change_buffering = all
innodb_purge_threads = 4            
innodb_purge_batch_size = 300           

innodb_old_blocks_time = 1
innodb_fast_shutdown = 0
performance_schema = 1
innodb_print_all_deadlocks = 1
innodb_sort_buffer_size = 4M 

innodb_page_size = 16k
gtid_mode=on
enforce_gtid_consistency=on     

table_open_cache_instances=16
binlog_rows_query_log_events=1      


## pasword
default_password_lifetime=0 

[mysqldump]
quick
max_allowed_packet = 32M

[mysql]
no-auto-rehash
prompt=\p@\d>\_

[mysqld_safe]
open-files-limit = 28192

[mysqlhotcopy]
interactive-timeout
1.缓冲池大小和数量

innodb_buffer_pool_size = 1G  在机器内存的60%~80%

需要留一部分内存给系统。

2.最大连接客户端数(默认151,通常不够用)

max_connections = 1000

3.Binlog相关参数

bin_log路径

https://img1.sycdn.imooc.com/climg/65fe7f7c09d7995108060296.jpg

binlog_format = row   行模式

binlog_expire_logs_seconds = 2592000      (30天自动清除)

log_slave_updates = 1     ​主从库开启复制,建议全部开启

4.数据目录

配置单独的数据盘,提高查询效率

https://img1.sycdn.imooc.com/climg/65fe80b509ce0d3d08050313.jpg

5.服务ID

server_id =     ​    ​(    ​    ​建议设备IP后两段,防止同一机房ID冲突)

https://img1.sycdn.imooc.com/climg/65fe80d4091dee1904040097.jpg

6.只读参数

read_only = 0     (一般主库关闭0,从库开启1)

https://img1.sycdn.imooc.com/climg/65fe815e09888aa004530135.jpg

7.双一参数

sync_binlog = 100   执行100个事务再落盘  (一致性要求高就减小数值)

8.开启GTID

https://img1.sycdn.imooc.com/climg/65fe8256095c41cd03650090.jpg

9.采用独立表空间

https://img1.sycdn.imooc.com/climg/65fe82ae092d0c0204140080.jpg

10.不区分大小写

https://img1.sycdn.imooc.com/climg/65fe82c20950488604020046.jpg

11.IO操作数

https://img1.sycdn.imooc.com/climg/65fe82df09037f1604120070.jpg

12.重做日志相关

https://img1.sycdn.imooc.com/climg/65fe83150917fa9605670122.jpg

13.慢查询相关参数

https://img1.sycdn.imooc.com/climg/65fe836509bb633004450082.jpg

https://img1.sycdn.imooc.com/climg/65fe836c096e408a07110070.jpg

14.连接超时参数

https://img1.sycdn.imooc.com/climg/65fe839f09c555eb03810070.jpg

15.事务隔离级别

https://img1.sycdn.imooc.com/climg/65fe83f00908dcdd05960066.jpg

16.InnoDB行锁等待时间

https://img1.sycdn.imooc.com/climg/65fe846b094d619f04100076.jpg

17.死锁信息记录在错误日志里

https://img1.sycdn.imooc.com/climg/65fe84aa0968ba6204440066.jpg

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/485235.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

FloodFill算法——力扣被围绕的区域

文章目录 题目解析算法解析代码解析 题目解析 被围绕的区域 我们来解读一下这个题目,这个题目的意思就是求出被X围绕的O有多少个,那么什么是被围绕呢?也就是没有出路并且连通的O不能到四条边上,这就算是被围绕了,可是…

oracle 19c RAC补丁升级

1.停止集群件备份家目录 ----两节点分别操作 cd /u01/app/19.3.0/grid/bin/ crsctl stop crstar -zcvf /u01/app.tar.gz /u01/app/u01/app/19.0.0/grid/bin/crsctl start crs2.两节点 GI、DB OPatch 替换(都得执行) ----# 表示 root 用户,$…

npm、nrm、nvm详解与应用

本文全面介绍了 npm、nrm 以及 nvm 这三个与 Node.js 开发密切相关的工具。首先,对 npm 进行了定义和功能解释,包括其在依赖管理、项目管理、脚本执行、版本控制和社区贡献等方面的作用。接着,详细介绍了 npm 的常用命令和设置下载源的操作&a…

SqlServer找不到SQL Server Configuration Manager(配置管理)

1、Win键 R ,输入 compmgmt.msc 2、找到Sql Server配置管理器

iOS开发 - 转源码 - __weak问题解决

iOS开发 - 转源码 - __weak问题解决 在使用clang转换OC为C代码时,可能会遇到以下问题 cannot create __weak reference in file using manual reference 原因 __weak弱引用是需要runtime支持的,如果我们还只是使用静态编译,是无法正常转换的…

PCIe总线-PCIe总线简介(一)

1.概述 早期的计算机使用PCI(Peripheral Component Interconnect)总线与外围设备相连,PCI总线使用单端并行信号进行数据传输,由于单端信号很容易被外部系统干扰,其总线频率很难进一步提高。目前,为了提高总…

文件夹读取不到文件:深度解析与高效恢复策略

一、遭遇文件夹读取难题:文件离奇失踪 在日常使用电脑或移动设备的过程中,我们有时会遇到一个令人头疼的问题:原本存储着重要数据的文件夹突然变得“空空如也”,其中的文件仿佛凭空消失一般,无法正常读取。这种文件夹…

开源博客项目Blog .NET Core源码学习(10:App.Framwork项目结构分析)

开源博客项目Blog的解决方案总共包括4个项目,其中App.Hosting项目包括所有的页面及控制器类,其它项目主要提供数据库访问、基础类型定义等。这四个项目的依赖关系如下图所示,本文主要分析App.Framwork项目的主要结构及主要文件的用途。   …

IDEA 远程调试

1.什么是远程调试 Java提供了一个远程调试功能,支持设置断点及线程级的调试同时,不同的JVM通过接口的协议联系,本地的Java文件在远程JVM建立联系和通信。 2.服务端开启远程调试 开启远程调试功能,需要修改tomcat 的catalina.sh…

Spring Cloud Gateway Server MVC

之前你如果要用spring cloud gateway ,就必须是webflux 的,也就是必须是异步响应式编程。不能和spring mvc 一起使用。现在spring cloud 新出了一个可以不用webflux的gateway。 具体使用mvc的gateway步骤如下 普通的Eureka Client的项目 如果你只是想测…

unity无法使用道路生成插件Road Architect(ctrl和shift无法标点)

切换一下布局就行了。 附:Road Architect教学地址

以行动激发消费活力,加多宝引领高品质消费浪潮

2024年“315”期间,加多宝携手全国多地市场监督管理局、消费者协会等单位,围绕今年“激发消费活力”主题,积极配合各地相关政府部门开展系列宣传活动,以实际行动呼吁切实保护消费者合法权益,共建诚信消费环境&#xff…

Kubernetes概念:服务、负载均衡和联网:2. Gateway API

Gateway API 官方文档:https://kubernetes.io/zh-cn/docs/concepts/services-networking/gateway/ Gateway API 通过使用可扩展的、角色导向的、 协议感知的配置机制来提供网络服务。它是一个附加组件, 包含可提供动态基础设施配置和高级流量路由的 API…

机器学习——AdaBoost算法

机器学习——AdaBoost算法 在机器学习领域,AdaBoost算法是一种非常流行的集成学习方法,旨在提高分类器的性能。本篇博客将介绍AdaBoost算法的原理、算法流程、算法参数,对比AdaBoost和随机森林的区别,并使用Python实现AdaBoost算…

数据结构·排序

1. 排序的概念及运用 1.1 排序的概念 排序:排序是将一组“无序”的记录序列,按照某个或某些关键字的大小,递增或递减归零调整为“有序”的记录序列的操作 稳定性:假定在待排序的记录序列中,存在多个具有相同关键字的记…

[Java基础揉碎]单例模式

目录 什么是设计模式 什么是单例模式 饿汉式与懒汉式 饿汉式vs懒汉式 懒汉式存在线程安全问题 什么是设计模式 1.静态方法和属性的经典使用 2.设计模式是在大量的实践中总结和理论化之后优选的代码结构、编程风格、 以及解决问题的思考方式。设计模式就像是经典的棋谱&am…

Docker进阶:Docker-cpmpose 实现服务弹性伸缩

Docker进阶:Docker-cpmpose 实现服务弹性伸缩 一、Docker Compose基础概念1.1 Docker Compose简介1.2 Docker Compose文件结构 二、弹性伸缩的原理和实现步骤2.1 弹性伸缩原理2.2 实现步骤 三、技术实践案例3.1 场景描述3.2 配置Docker Compose文件3.3 使用 docker-…

Spark Map 和 FlatMap 的比较

Spark Map 和 FlatMap 的比较 本节将介绍Spark中map(func)和flatMap(func)两个函数的区别和基本使用。 函数原型 map(func) 将原数据的每个元素传给函数func进行格式化,返回一个新的分布式数据集。 flatMap(func) 跟map(func)类似,但是每个输入项和…

基于51单片机数控直流电压源proteus仿真LCD显示+程序+设计报告+讲解视频

基于51单片机数控直流电压源proteus仿真LCD显示( proteus仿真程序设计报告讲解视频) 仿真图proteus7.8及以上 程序编译器:keil 4/keil 5 编程语言:C语言 设计编号:S0072 讲解视频 基于51单片机数控直流电压源proteus仿真程序…

37、Linux中Xsync数据同步备份工具

37、Linux中Xsync数据同步备份工具 一、介绍二、配置集群hostname三、修改xsync文件四、赋权五、安装Rsync六、验证一七、配置免密登录1、生成rsa密钥2、copy机器自身公钥到目标机器3、.ssh/文件目录赋权 八、验证二 ⚠️ 注:本文全程在普通用户下操作,…