MySQL——常见问题

NULL和空值的区别

1、空值不占空间,NULL值占空间。当字段不为NULL时,也可以插入空值。

2、当使用 IS NOT NULL 或者 IS NULL 时,只能查出字段中没有不为NULL的或者为 NULL 的,不能查出空值。

3、判断NULL 用IS NULL 或者 is not null,SQL 语句函数中可以使用IFNULL()函数来进行处理,判断空字符用 =''或者<>''来进行处理。

4、在进行count()统计某列的记录数的时候,如果采用的NULL值,会别系统自动忽略掉,但是空值是会进行统计到其中的。

5、MySql中如果某一列中含有NULL,那么包含该列的索引就无效了。这一句不是很准确。

6、实际到底是使用NULL值还是空值(''),根据实际业务来进行区分。个人建议在实际开发中如果没有特殊的业务场景,可以直接使用空值。

truncate和delete区别

速度上:truncate快,整张表删除;delete一行一行删除

产生日志上:delete删除会产生二进制日志;truncate删除数据不产生二进制日志

insert和replace区别

insert: 插入一条新的数据, 假如主键相同的话会报错

replace: 要插入的数据中索引值不同于表中任意一条数据的索引值,就增加一条新的数据,等同于insert,否则,替换原来的数据,等同于先delete再insert

MySQL调优

1.升级硬件

2.系统(linux)调优,内存,文件系统,内核等参数的调优

3.MySQL的调优

3.1 参数的调优--》需要了解MySQL的机制

3.2 SQL语句的调优--》需要了解SQL语句

3.3 分区,分表,分库

4.架构的调优

4.1 中间件(缓存)

4.2 分布式(集群)

相关推荐
野犬寒鸦17 分钟前
Pipeline功能实现Redis批处理(项目批量查询点赞情况的应用)
java·服务器·数据库·redis·后端·缓存
五岁小孩吖17 分钟前
Mysql 如何使用 binlog 日志回滚操作失误的数据
mysql
꧁༺摩༒西༻꧂24 分钟前
Spring Boot Actuator 监控功能的简介及禁用
java·数据库·spring boot
程序员JerrySUN31 分钟前
当前主流GPU全景讲解:架构、功能与应用方向
数据库·人工智能·驱动开发·redis·缓存·架构
__Smile°31 分钟前
kubeadm-k8s 中的 etcd 备份与恢复
数据库·docker·云原生·容器·kubernetes·etcd
Runing_WoNiu1 小时前
最佳左前缀法则(Optimal Left-Prefix Rule)
数据库·mysql
IvorySQL2 小时前
如何使用 pg_rman 进行 PostgreSQL 的备份与恢复
数据库
Tapdata2 小时前
一文了解增量物化视图维护(IVM):原理、演化与实践落地
数据库
码间舞2 小时前
IndexDB适用于什么场景?如何使用IndexDB?
前端·javascript·数据库
百里晴鸢2 小时前
mysql之主从复制
mysql