DBA工作经验总结

news/2024/5/9 0:38:47/文章来源:https://blog.csdn.net/Timebro/article/details/136963626

目录

一、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   = 1Glog_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 = 128Mdefault_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 = 1innodb_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.luyixian.cn/news_show_1026429.aspx

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

相关文章

asp程序之“会话Cookie中缺少HttpOnly属性”

先在URL重新模块添加服务器变量&#xff1a; 添加变量名&#xff1a;Add HttpOnly 网站根目录web.config添加如下规则&#xff1a; <?xml version"1.0" encoding"UTF-8"?> <configuration><system.webServer><rewrite><out…

第1篇:Mysql数据库表结构导出字段到Excel(一个sheet中)

package com.xx.util;import org.apache.poi.ss.usermodel.*; import org.apache.poi.xssf.usermodel.XSSFWorkbook;import java.sql.*; import java.io.*;public class DatabaseToExcel {public static void main(String[] args) throws Exception {// 数据库连接配置String u…

SQLyog图形化工具安装教程

日常开发中&#xff0c;当需要输入的命令较长时&#xff0c;使用命令行客户端工具输入命令很不方便&#xff0c;此时可以使用相对方便的图形化管理工具来操作MySQL&#xff0c;从而提高效率。 SQLyog的特点 1.基于MySQL程序接口开发 2.方便快捷的数据库同步与数据库结构同步 …

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议(ICBMDE 2024)

【检索稳定|火爆征稿中】2024年企业管理与数字化经济国际学术会议&#xff08;ICBMDE 2024&#xff09; 2024 International Conference on Business Management and Digital Economy&#xff08;ICBMDE 2024&#xff09; ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~…

【算法刷题】链表笔试题解析(1)

一、链表分割 题目描述&#xff1a; 链接&#xff1a;链表分割 题目分析&#xff1a; 这题直接处理并不好做&#xff0c;我们可以构建前后两个链表&#xff0c;将小于x值的结点放在链表a内&#xff0c;将其它结点放在链表b内&#xff0c;这样将原链表遍历完后&#xff0c;原链…

基于springboot+vue+Mysql的闲一品交易平台

开发语言&#xff1a;Java框架&#xff1a;springbootJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#xff1a;…

缓存菜品、套餐、购物车相关功能

一、缓存菜品 通过缓存的方式提高查询性能 1.1问题说明 大量的用户访问导致数据库访问压力增大&#xff0c;造成系统响应慢&#xff0c;用户体验差 1.2 实现思路 优先查询缓存&#xff0c;如果缓存没有再去查询数据库&#xff0c;然后载入缓存 将菜品集合序列化后缓存入red…

如何利用nginx在windows系统上搭建一个文件服务器

1&#xff1a;先下载windows版的nginx 官网 http://nginx.org/ 下载完后注意端口号&#xff08;默认端口号为&#xff1a;80&#xff09;是否被占用 启动nginx服务 地址为localhost的 如果出现 Welcome to nginx 就说明启动成功 2&#xff1a;然后进入conf文件里修改配置 …

题目:摆花(蓝桥OJ 0389)

问题描述&#xff1a; 题解&#xff1a; #include <bits/stdc.h> using namespace std; using ll long long; const int N 105; const ll p 1e6 7; ll a[N], dp[N][N];int main() {int n, m; cin >> n >> m;for(int i 1; i < n; i)cin >> a[i…

EdgeGallery开发指南

API接口 简介 EdgeGallery支持第三方业务系统通过北向接口网关调用EdgeGallery的业务接口。调用流程如下图所示&#xff08;融合前端edgegallery-fe包含融合前端界面以及北向接口网关功能&#xff0c;通过浏览器访问时打开的是融合前端的界面&#xff0c;通过IP:Port/urlPref…

网络原理(6)——IP协议

目录 一、网段划分 现在的网络划分&#xff1a; 1、一般情况下的家庭网络环境 2、IP地址 3、子网掩码 4、网关 以前的网络划分&#xff1a; 二、特殊IP 1、环回 IP 2、主机号为全 0 的IP 3、广播地址IP 三、路由选择&#xff08;路线规划&#xff09; 一、网段划分…

vue3+ts+element home页面侧边栏+头部组件+路由组件组合页面教程

文章目录 效果展示template代码script代码样式代码 效果展示 template代码 <template><el-container class"home"><el-aside class"flex" :style"{ width: asideDisplay ? 70px : 290px }"><div class"aside-left&q…

KubeSphere简单介绍及安装使用

KubeSphere 概述 官网地址&#xff1a;https://kubesphere.io/zh/ 什么是 kubesphere KubeSphere 是一个开源的多云容器管理平台&#xff0c;旨在简化企业级 k8s 集群的部署、管理和运维。它提供了一个可视化的管理界面&#xff0c;帮助用户更轻松地管理和监控 k8s 集群&…

vscode使用Runner插件将.exe文件统一放到一个目录下

找到右下角管理&#xff0c;点击扩展。 找到Code Runner插件&#xff0c;打开扩展设置。 向下翻&#xff0c;找到Executor Map&#xff0c;点击在settings.json中编辑。 在c和c的配置命令栏中增加\\\output\\即可。&#xff08;增加的目录不能自动创建&#xff0c;需要手动创建…

基于大语言模型的云故障根因分析|顶会EuroSys24论文

*马明华 微软主管研究员 2021年CCF国际AIOps挑战赛程序委员会主席&#xff08;第四届&#xff09; 2021年博士毕业于清华大学&#xff0c;2020年在佐治亚理工学院做访问学者。主要研究方向是智能运维&#xff08;AIOps&#xff09;、软件可靠性。近年来在ICSE、FSE、ATC、EuroS…

t-rex2开放集目标检测

论文链接&#xff1a;http://arxiv.org/abs/2403.14610v1 项目链接&#xff1a;https://github.com/IDEA-Research/T-Rex 这篇文章的工作是基于t-rex1的工作继续做的&#xff0c;核心亮点&#xff1a; 是支持图片/文本两种模态的prompt进行输入&#xff0c;甚至进一步利用两…

简单的SpringMVC项目创建流程(基于XML文件(了解))

1&#xff1a;首先创建一个maven项目&#xff0c;并在pom.xml文件中导入依赖 <project xmlns"http://maven.apache.org/POM/4.0.0" xmlns:xsi"http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation"http://maven.apache.org/POM/4.0.0 …

浅模仿小米商城布局(有微调)

CSS文件 *{margin: 0;padding: 0;box-sizing: border-box; }div[class^"h"]{height: 40px; } div[class^"s"]{height: 100px; } .h1{width: 1528px;background-color: green; } .h11{background-color:rgb(8, 220, 8); } .h111{width: 683px;background-c…

Linux 基础命令1

目录 一.Linux优点&#xff08;优势&#xff09; 二.Shell 三.Linux命令 四.help命令 五.Linux目录结构 六.目录操作 七.路径 一.Linux优点&#xff08;优势&#xff09; 1.一切都是一个文件 2.系统中拥有小型 &#xff0c;轻量级&#xff0c;单一用途的程序 3.避免令…

【循环神经网络rnn】一篇文章讲透

目录 引言 二、RNN的基本原理 代码事例 三、RNN的优化方法 1 长短期记忆网络&#xff08;LSTM&#xff09; 2 门控循环单元&#xff08;GRU&#xff09; 四、更多优化方法 1 选择合适的RNN结构 2 使用并行化技术 3 优化超参数 4 使用梯度裁剪 5 使用混合精度训练 …