@JunQiu
2018-09-18T21:23:14.000000Z
字数 2237
阅读 1608
mongo数据类型、mysql数据类型、存储引擎浅读
summary_2018/08
mongodb
mysql
1、日常工作
1.1、账号集群系统服务升级
1.2、mongo:数据类型
1.3、mysql:数据类型、存储引擎浅读
2、技术学习
- 数据类型
- Tips:对于Number默认当作64位双精度类型进行处理,精度过高请使用128位,字符串当作字符串处理,其余按照对应的类型进行处理(如regex:/xxx/),非法字符不能插入,若需要使用特定类型(如bit:0100)或者更高的精度表示请使用类型拓展
- NumberLong / NumberInt
- NumberDecimal
- MySQL支持多种类型的SQL数据类型:数字类型,日期和时间类型,字符串(字符和字节)类型,空间类型和 JSON数据类型。下面仅简单介绍一些常见特殊的值,具体请查看官方文档:
- 数字类型
- DECIMAL和NUMERIC 类型的存储精确的数值数据在MySQL中,NUMERIC实现为DECIMAL,所以下面的注释DECIMAL同样适用于 NUMERIC。(最大位数为DECIMAL65)
- BIT数据类型被用于存储比特值。一种 能够存储位值的类型。 范围从1到64。 BIT(M)
- 字符串类型
- char和varchar:char固定长度,varcahr变长,char为固定长度(空格填充,取出来是后面的空格被删除),varchar长度+1(变长需要\n,varchar(4)装满时为5)
- BINARY(填充值是0x00,取出来后不会被删除)和VARBINARY 类型相似,CHAR与 VARCHAR,不同的是它们包含二进制字符串,而非非二进制字符串。(字节长度)
- enum(当作数值处理,比文本更快)
- 时间类型
- DATE类型用于具有日期部分但没有时间部分的值。MySQL DATE以'YYYY-MM-DD'格式检索和显示 值 。支持的范围是 '1000-01-01'到 '9999-12-31'。
DATETIME类型用于包含日期和时间部分的值。MySQL DATETIME以'YYYY-MM-DD HH:MM:SS'格式检索和显示 值。支持的范围是 '1000-01-01 00:00:00'到'9999-12-31 23:59:59'。
TIMESTAMP数据类型被用于同时包含日期和时间部分的值。 TIMESTAMP的'1970-01-01 00:00:01'UTC到'2038-01-19 03:14:07'UTC 范围。
TIME以'HH:MM:SS'格式(或大小 'HHH:MM:SS'时值的格式)检索和显示值。TIME值可以从'-838:59:59'到 '838:59:59'。
YEAR以YYYY格式显示值, 范围为 1901to 2155或 0000。
- 空间、json等数据类型见原文
- Tips:如果启用了严格的SQL模式,则MySQL会根据SQL标准拒绝带有错误的超出范围的值,并且插入失败。如果未启用限制模式,MySQL会将值剪辑到列数据类型范围的相应端点,并存储结果值。
在MySQL 8.0中,InnoDB是默认的MySQL存储引擎。
InnoDB:MySQL 8.0中的默认存储引擎。 InnoDB是一个事务安全(ACID兼容)的MySQL存储引擎,具有提交,回滚和崩溃恢复功能,以保护用户数据。 InnoDB行级锁定(没有升级到更粗略的粒度锁)和Oracle风格的一致非锁定读取增加了多用户并发性和性能。InnoDB将用户数据存储在聚簇索引中,以减少基于主键的常见查询的I / O. 为了保持数据完整性, InnoDB还支持FOREIGN KEY参照完整性约束。
- MyISAM:这些表占用空间小。 表级锁定 限制了读/写工作负载的性能,因此它通常用于Web和数据仓库配置中的只读或大部分读取工作负载。
- Memory:将所有数据存储在RAM中,以便在需要快速查找非关键数据的环境中快速访问。这台发动机以前被称为HEAP发动机。其用例正在减少; InnoDB其缓冲池内存区域提供了一种通用且持久的方式来将大部分或全部数据保存在内存中,并 NDBCLUSTER为大型分布式数据集提供快速键值查找。
- CSV:它的表格实际上是逗号分隔值的文本文件。CSV表允许您以CSV格式导入或转储数据,以便与读取和写入相同格式的脚本和应用程序交换数据。由于CSV表未编制索引,因此通常InnoDB在正常操作期间将数据保留在表中,并且仅在导入或导出阶段使用CSV表。
- Archive:这些紧凑的无索引表用于存储和检索大量很少引用的历史,存档或安全审计信息。
- Blackhole:Blackhole存储引擎接受但不存储数据,类似于Unix /dev/null设备。查询始终返回空集。这些表可用于将DML语句发送到从属服务器的复制配置,但主服务器不保留其自己的数据副本。
- Merge:使MySQL DBA或开发人员能够对一系列相同的MyISAM表进行逻辑分组,并将它们作为一个对象引用。适用于数据仓库等VLDB环境。
- Federated: Offers the ability to link separate MySQL servers to create one logical database from many physical servers. Very good for distributed or data mart environments.(提供从多个分离的mysql服务器创建一个逻辑数据库的能力)