ES
1、try-except: try覆盖的内容
2、Log.error,常用日志级别;
3、菜单权限;
4、输出结果分页;Paginator
5、不乱改通用接口,专用接口放在app内部;
6、功能常量不同模块另起文件。
7、Es使用注意:
(1)Field Collapsing(字段折叠)不能与scroll、rescore以及search after 结合使用。
(2)使用collapse 的字段如果是 string类型,则es 中对应 keyword。(The field used for collapsing must be a single valued keyword or numeric field with doc_values activated)
(3)keyword问题
text类型:会进行分词;分词后建立索引;支持模糊查询;支持准确查询;不支持聚合查询。
keyword类型:不会分词;直接建立索引;支持模糊查询;支持准确查询;支持聚合查询。
ES5.0及以后的版本取消了string类型,将原先的string类型拆分为text和keyword两种类型。它们的区别在于text会对字段进行分词处理而keyword则不会进行分词。
也就是说如果字段是text类型,存入的数据会先进行分词,然后将分完词的词组存入索引,而keyword则不会进行分词,直接存储。
创建index的时候可能给某个字段指定了类型text
(4)match_phrase匹配失效的话,可以考虑使用正则表达式regexp,用”.*”等匹配
8、列表嵌套字典去重
all_data = [dict(d) for d in (set([tuple(d.items()) for d in all_data]))]
az_list = [dict(d) for d in (set([tuple(d.items()) for d in az_list]))]
Mysql
1、mysql超时连接参数过大,连接池超时参数小,导致无效连接占满连接池
2、Mysql不可用-》存储集群pool满
3、数据库实例底层状态正常,但底层连接数据库的代理实例(proxy)状态异常,导致数据库控制台状态异常,无法访问
4、Mysql:Mysql数据库系统表之详细了解INNODB_TRX、INNODB_LOCKs、INNODB_LOCK_waits、PROCESSLIST表_innodb_trx trx_state lock_wait-CSDN博客
当前运行的所有事务
SELECT * FROM information_schema.INNODB_TRX;当前出现的锁
SELECT * FROM information_schema.INNODB_LOCKs;锁等待的对应关系
SELECT * FROM information_schema.INNODB_LOCK_waits;PROCESSLIST表记录了每个MySql线程的用户,地址以及操作的db等其他信息。
SELECT * FROM information_schema.PROCESSLIST;
或者SHOW PROCESSLIST
出现锁超时问题Lock wait timeout exceeded,
执行SELECT * FROM information_schema.INNODB_TRX;
查看trx_rows_locked 这一列如果是大于0 或 trx_state:lock wait ,说明是堵塞住, 然后查对应的trx_mysql_thread_id 列找到对应线程ID,
然后执行SQL , kill 线程ID 即可
5、锁等待与死锁
锁等待 就是session (事物会话,开启一个事物代表一个会话)A 对某行数据获取独占锁(在这边一般就是写锁),然后session B 对相同的行进行获取独占锁就发生了锁等待;A释放B才能继续进行,超出innodb_lock_wait_timeout时间会报异常:
Lock wait timeout exceeded; try restarting transaction
死锁:两个以上的会话在抢占资源过程中,产生相互等待的情况,A先进入锁等待,当B也进入锁等待时会直接报死锁异常:
Deadlock found when trying to get lock; try restarting transaction
使用 show engine innodb status 查看死锁
查找到死锁线程,杀死MYSQL死锁的线程(kill命令);
如果事物未提交,直接回滚事物;
锁类型:共享锁(S);排他锁(X);意向共享(IS);意向排他(IX)
gap lock(GK)间隙锁,锁定一个范围,不包括当前记录本身;
RECORD LOCKS 代表记录锁;
查看表锁 : show status like 'table%';