MongoDB -- 特殊集合和索引
特殊集合和索引固定集合之前介绍的集合都是随着文档插入规模不断变大的,固定的集合是规模是固定的,结构和循环队列类似,如果没有空间了,就替换最老的文档
创建:和普通集合不同,固定集合需要显式的进行创建,创建后其属性就不能再被改变了
自然排序:固定集合可以按数据插入的顺序读取数据
循环游标:类似于tail -f,可以持续的从集合中获取数据,只适用于固定集合
没有_id索引的集合
允许一个集合不需要_id索引,可以提高数据插入效率
2.2版本以前固定集合默认是没有id索引的
TTL索引固定集合中内容会被自动覆盖,控制不是很灵活,TTL(time to live index)生命周期索引,允许为每一个文档设置一个超时时间
TTL是创建一个索引,对指定字段(时间类型)的数据进行比对,超过设置的过期时间之后该文档会被删除,这里清理的频率上每分钟,所以不能保证秒级别的过期时间
全文本索引类似于ES的索引,mongo中可能还不是很成熟,对性能的影响可能会很大,需要衡量好再使用
地理空间索引mongo支持几种地理空间索引,可以用来进行相关数据的存储和查询
GridFS存储文件是mongo ...
MySQL -- 问题记录1
一、普通索引和唯一索引的选择这里讨论当一个字段比如身份证号码,我们已经确定他是唯一了,该给他创建唯一索引还是普通索引
查询
唯一索引的查询只要查到第一个符合条件的数据后就会返回
普通索引查询到符合条件的数据后还会往后查询直到找到第一条不符合条件的数据后才返回,其实就是要把所有符合条件的数据都找到,当数据已经是唯一的时候就相当于指针会往后多查找一次消耗基本可忽略
结论:对于查询来说两者差距可以忽略不计
疑问:==对于已知是唯一的数据手动做limit 1是不是能解决查询上的差异==
插入
唯一索引由于要去做数据唯一性校验所以不能用上change buffer机制
普通索引可以直接用change buffer,且不用做唯一性校验
结论:change buffer的内容不在这里详细讲,插入时普通索引是要优于唯一索引的
案例
将普通索引改成唯一索引后大量的插入操作导致数据库的内存命中率降低
结论:尽量使用普通索引,将唯一性校验放到业务代码里面去做,不要把压力转移到数据库
二、为什么优化器会选错索引有时候我们创建了索引,但优化器最终没有去使用
优化器的工作原理(粗略)
判断本 ...
linux -- Linux命令
网络调试ping
fping
traceroute
mtr
strace
dnspeep
iftop安装这个依赖,使用命令:iftop -PB查看带宽使用情况
TX网卡出向流量、RX网络累计流量、TOTAL累计流量
peak峰值流量(这里应该是58.0KB/s而不是带宽,*8为带宽)
rates表示2s、10s、40s的平均流量,所以这个数据是比较有参考价值的
DNS解析Hosts配置hosts
123vim /etc/hosts123.123.123.123 www.baidu.com124.123.123.123 www.qq.com
配置DNS服务参考博客:Linux配置/etc/resolv.conf详解
123vim /etc/resolv.confnameserver 114.114.114.114nameserver 8.8.8.8
nameserver定义DNS服务器地址,可以配置多个服务器,按配置顺序查找解析域名(找不到就找下一个解析服务器)
关闭本地DNS服务
12345# 查看运行状态systemctl status systemd-reso ...
python -- 版本迭代
写在前面
python2.6之后发布的python3.0(2008年),但是由于3.0并不能向下兼容2.0,所以10年的时候又发布了一个2.7版本,这个版本一直维护到了2020年,很多3.x后来的特性也被加入到了2.7的迭代中
3.10更清楚的错误消息异常信息中会给出关于语法错误的更精准信息
结构化模式匹配提供各种嵌套语法匹配的match
12345678910111213141516171819202122232425262728class Point: x: int y: intdef location(point): match point: case Point(x=0, y=0): print("Origin is the point's location.") case Point(x=0, y=y): print(f"Y={y} and the point is on the y-axis.") ...