核心内容摘要
中国500米分辨率年总降水量数据集(2001-2024)
文章目录CHAR和VARCHAR的区别VARCHAR(
和 VARCHAR(
的区别是什么表级锁和行锁的区别共享锁和排他锁的区别DATETIME 和 TIMESTAMP 的区别是什么如何选择CHAR和VARCHAR的区别CHAR 和 VARCHAR 是最常用到的字符串类型两者的主要区别在于CHAR 是定长字符串VARCHAR 是变长字符串。
CHAR存储时会在右边填充空格以达到指定的长度检索时会去掉空格。
CHAR 更适合存储长度较短或者长度都差不多的字符串VARCHAR:存储时需要使用 1 或 2 个额外字节记录字符串的长度检索时不需要处理。
适合存储长度不确定或者差异较大的字符串.CHAR(N) 和 VARCHAR(N) 的 N 都代表能够保存的字符数的最大值无论是字母、数字还是中文每个都只占用一个字符。
VARCHAR(
和 VARCHAR(
的区别是什么VARCHAR(
和VARCHAR(
的本质区别是能存储的字符最大长度不同。
VARCHAR是变长存储实际占用空间 真实字符长度 长度标记,虽然两个存储的字符数范围不同但二者存储相同的字符串所占用磁盘的存储空间其实是一样的。
表级锁和行锁的区别表级锁MySQL 中锁定粒度比较大的一种锁出现在针对非索引字段加的锁或存储引擎不支持行锁加锁的情况。
对当前操作的整张表加锁实现简单资源消耗也比较少加锁快不会出现死锁。
不过触发锁冲突的概率最高高并发下效率极低。
表级锁和存储引擎无关MyISAM 和 InnoDB 引擎都支持表级锁。
行级锁MySQL 中锁定粒度最小的一种锁是针对索引字段加的锁只针对当前操作的行记录进行加锁。
行级锁能大大减少数据库操作的冲突。
其加锁粒度最小并发度高但加锁的开销也最大加锁慢会出现死锁。
行级锁和存储引擎有关是在存储引擎层面实现的。
MyISAM不支持行锁InnoDB支持行锁。
共享锁和排他锁的区别共享锁又称读锁事务在读取记录的时候获取共享锁允许多个事务同时对同一记录加共享锁。
共享排他锁又称互斥锁/写锁事务在修改记录的时候获取排他锁不允许多个事务同时获取。
如果一个记录已经被当前加了排他锁那其他事务不能再对这条事务加任何类型的锁锁不兼容。
排他注意一条记录已经被当前事务加了共享锁S 锁其他事务是不能再加排他锁X 锁的。
使用共享锁/排他锁示例# 共享锁 SELECT ... LOCK IN SHARE MODE; # 排他锁 SELECT ... FOR UPDATE;DATETIME 和 TIMESTAMP 的区别是什么如何选择核心区别对比维度DATETIMETIMESTAMP存储空间8 字节4 字节是否受时区影响否是取值范围
1
1
存储内容字面时间UTC 时间戳是否自动更新需显式设置可配置使用场景DATETIME适用场景需要存储大于2038年的时间不关注时区不期望时区变化TIMESTAMP适用场景需要关注多时区时间转换。
希望数据库能自动管理时区转换不超过TIMESTAMP存储范围。