1. 对数据库掌握层次的定义
    熟悉:掌握基本sql语法,能对接数据库进行简单功能开发
    掌握:能独立设计应用的数据库表,掌握基本sql优化技巧
    精通:掌握事务隔离级别,锁,分库分表设计等概念和技术,能进行大数据量应用的数据库设计
    综合应用:综合使用数据库技术,独立完成大数据量下大型产品或项目的数据库设计和调优

参考: https://segmentfault.com/a/1190000022635983
https://blog.csdn.net/zanpengfei/article/details/123505051
https://juejin.cn/post/6958426991980724261

数据库底层基础:
mysql底层存储结构是B+树,
b+树的非叶子节点不会存储数据,至存储索引值,数据都存储在叶子节点上

B+的特点
1 B+树的叶子节点连起来是一条双向链表,目的是为了解决范围查找。
2 非叶子节点不存数据,只存索引,空间利用更高效。
3 数据的个数和节点一样多,换句话说,非叶子节点存的是其子树的最大或最小值。

数据库优化:
https://segmentfault.com/a/1190000013672421
https://segmentfault.com/a/1190000013746118
https://segmentfault.com/a/1190000013781544

影响MySql的性能
1 服务器硬件( 磁盘io/CPU频率)
2 服务器系统(系统参数优化)
3 存储引擎(Mysql5.5及之后默认存储引擎是InnoDB)
MyIsAm: 不支持事务,表级锁
InnoDB: 支持事务(ACID),行级锁
4 数据库参数配置
5 数据库表结构设计和sql语句

数据库的优化顺序
① 数据库结构设计和SQL语句
② 数据库存储引擎的选择和参数配置
③ 系统选择及优化
④ 硬件升级

  1. 数据库结构优化方法
    ① 范式化 参考: https://blog.csdn.net/xy3233/article/details/86314329
    第一范式: 原子性 (列不能分割,一个列中不能有多个属性)
    第二范式: 消除部分依赖 (非主属性依赖主键全部,不是依赖主键的一部分)
    第三范式: 消除依赖传递 (非主属性是直接依赖于主键,还是依赖非主键列)
    数据库 只需满足第三范式(3NF)就行了
 范式化的优点:  减少冗余数据, 数据表体积小,更新可以更快范式化的缺点:  查询需要多表关联(会导致性能降低) 反范式化的优点: 减少表关联,可以优化索引反范式化的缺点: 数据冗余,维护不方便
  1. 为字段选取合适的类型
    数据字段类型:
    数值型: 整数 小数
    字符串类型:
    时间类型:
 字符串类型:
CHAR 类型用于定长字符串,并且必须在圆括号内用一个大小修饰符来定义。这个大小修饰符的范围从 0-255。比指定长度大的值将被截短,而比指定长度小的值将会用空格作填补。
VARCHAR的长度是可变的,
如果长度确定就用 char 因为CHAR类型由于本身定长的特性使其性能要高于 VARCHAR

合理的选择数据类型:
① 选择合理范围内最小的
② 选择相对简单的数据类型(数字类型比字符串简单)
③ 列属性尽量为NOT NULL(因为MYSQL对NULL字段索引优化不佳,增加更多的计算难度,同时在保存与处理NULL类形时,也会做更多的工作, 对于可能没值的数据,可以使用0 或者空字符串作为默认值)

  1. sql的索引优化
    索引两种主要的数据结构 B-tree 和hash
    B-tree索引优点: 加快查询速度,更适合范围查找
    hash索引的优点: 适合精确查找
    Mysql中常见的索引:
    普通索引:最基本的索引,没有任何限制
    唯一索引:与"普通索引"类似,不同的就是:索引列的值必须唯一,但允许有空值。
    主键索引:它 是一种特殊的唯一索引,不允许有空值。
    全文索引:仅可用于 MyISAM 表,针对较大的数据,生成全文索引很耗时好空间。
    组合索引:为了更多的提高mysql效率可建立组合索引,遵循”最左前缀“原则。
    索引的优化策略:
    ① 索引列上不能使用表达式和函数
    ② 使用选择性高的列作为索引(性别,区别性太低 就不适合做索引)
    ③ 宽度小的列优先
    ④ 尽量使用索引 is null, is not null, 不等于(!=或者<>), or 无法使用索引
    ⑤ like百分号要写在右边
    ⑥ 避免使用select *

慢sql分析 参考: https://blog.csdn.net/qq_40884473/article/details/89455740
查看慢查询日志状态 show variables like '%slow_query_log%';

开启慢查询日志 set global slow_query_log=1(当前数据库有效 重启消失)
永久配置 在my.cnf中配置

slow_query_log = 1
slow_query_log_file = /tmp/mysql_slow.log

慢查询日志位置 show variables like ‘%slow_query_log_file%’;

慢查询时间参数 show variables like ‘long_query_time%’;(默认查询时间超过10秒的会被记录)
使用 set global long_query_time=4 设置新的查询时间(需要重新连接才能看到, 或使用 show global variables like ‘long_query_time’

java面试题/认证答辩 ---数据库相关相关推荐

  1. java面试题/认证答辩 --- tomcat面试题

    参考: > https://blog.csdn.net/weixin_39222112/article/details/81316511 > https://zhuanlan.zhihu. ...

  2. Java面试题之:数据库锁

    Java面试题之:数据库锁 一.行级锁 二.表级锁 三.页级锁 一.行级锁   行级锁是一种排他锁,防止其他事务修改此行:在使用以下语句时,Oracle 会自动应用行级锁: INSERT.UPDATE ...

  3. Java面试题以及答案--数据库

    1.连接查询(必会) 1.左连接 (左外连接)以左表为基准进行查询,左表数据会全部显示出来,右表 如果和左表匹配 的数据则显示相应字段的数据,如果不匹配,则显示为 NULL; 2.右连接 (右外连接) ...

  4. Java面试题 非关系型数据库nosql

    四:非关系型数据库(nosql) 1:Redis (1)Redis介绍 是一个高性能的(key/value)分布式内存数据库,基于内存运行并支持内存的NoSql数据库之一,数据结构服务器. (2)特点 ...

  5. 面试题简答题——数据库相关汇总

    问题目录 1. 存储过程与函数的区别 2. primary key约束 与 unique 约束的区别 3. 简述查询优化的步骤 4. 数据库中常用的四种文件组织形式 5. 为什么要对关系代数表达式进行 ...

  6. 复习Java第二个项目仿QQ聊天系统 03(两种通信类、登录以及注册功能完善) Java面试题并发编程相关知识生活【记录一个咸鱼大学生三个月的奋进生活】025

    记录一个咸鱼大学生三个月的奋进生活025 复习Java(仿QQ聊天系统03两种通信类.登录以及注册功能完善) TcpSocket类(与服务器进行通信) Server类(服务器类) TcpMessage ...

  7. 2017java最新面试题_2017年最新java面试题及答案

    2017年最新java面试题及答案 class B { private int radius = 10; public void draw() { System.out.println("B ...

  8. 计算机等级考试java题型_计算机二级考试《java》试题及答案

    计算机二级考试<java>试题及答案 2017下半年计算机二级考试将于9月23日-26日举行,下面是小编为大家整理的计算机二级考试<java>试题及答案,欢迎参考~ 计算机二级 ...

  9. Java面试题全集84集系列-(1-XX)

    (1)不要说自己擅长某方面,说自己熟悉或者对某一方面有所研究. java 基础 (2) java 跨平台原理https://www.cnblogs.com/roger-yu/p/5827452.htm ...

最新文章

  1. 工作几年了,API 网关还不懂?
  2. 11、查看及测试网络、配置网络地址、内核及模块管理
  3. Ubuntu 12.04自带包安装GLPI IT资产管理软件
  4. 计算同比 环比_PowerBI学习教程(三)时间累积同比环比计算
  5. rand生成随机数的范围_JS中生成指定范围随机数
  6. oracle 字段 查找重复,oracle数据库查询重复的索引列
  7. IOCP配合AcceptEx的例子
  8. khoury计算机科学学院,东北大学Open House中国站
  9. Spring Boot集成Redis缓存之RedisTemplate的方式
  10. C# 文件读写系列二
  11. 用Python写好友管理系统
  12. 小学认识计算机评课,小学信息技术评课.doc
  13. 3D平面SLAM相关总结与思考
  14. 六大IT运维服务管理问题总结
  15. Unity3D延迟执行功能脚本
  16. 【华人学者风采】汪玉 清华大学
  17. VMware workstation安装虚拟机--Windows XP
  18. 网易云信IM即时通讯PHP接口开发
  19. VMware workstation虚拟机REHL8下配置安装Django 4.0.6 +uwsgi 2.0.20 +nginx1.22+Mariadb10.9.1
  20. OC正式协议和非正式协议

热门文章

  1. 2018年全国城镇非私营单位就业人员年平均工资82461元
  2. Java生成随机数:数字+大小写字母
  3. html修改行间距,如何在html中更改行间距(示例代码)
  4. uniapp 实现ios端和安卓端的文件下载,多文件管理
  5. 一行代码,实现神奇的文字图片
  6. 直播行业隐形炸弹:攻击性内容弹幕伤了谁?
  7. 毕业论文中会出现的问题
  8. 基于物联网、云计算建设的智慧校园云平台源码
  9. PostgreSQL psql工具使用方法
  10. 攻防世界web进阶区Web_python_block_chain详解