Pyhton全栈的知识点(6)
1.MySQL数据库 - 引擎: - innodb - 支持事务 - 锁 - 行锁 - 表锁 - 示例: - 终端: begin; 加锁 select xx from xx for update; commit; 提交 - pymysql cursor.execute('select * from xx for update') - django with trancation.automic(): models.User.objects.all().for_update() - mysaim - 不支持事务 - 锁 - 表锁 - 查询快 2.数据库授权 grant all\select\insert\update\delete|权限 on tables|表名字 to users\public|用户名\\ with grant option|可继承 GRANT <权限>[,<权限>]...[ON <对象类型> <对象名>]TO <用户>[,<用户>]...[WITH GRANT OPTION]; 3.了解:https://www.cnblogs.com/wupeiqi/articles/5713323.html - 视图 (虚拟表) - 存储过程 (储存语句放在数据库,下次用直接调用) - 触发器 (自动触发日志,写下记录) - 函数 (数据库函数) select max(id) from tb group by xid; 4.索引 索引作用:加速查找+约束。 索引种类: - 主键索引:加速查找、不重复、非空 - 唯一索引:加速查找、不重复、只能有一个可以为空 - 普通索引:加速查找 - 联合索引:加速查找 - 联合唯一索引:加速查找、不重复 PS:联合索引遵循最左前缀原则。 id name pwd email 命中索引 select * from tb where name='x' select * from tb where name='x' and pwd='123' select * from tb where name='x' and pwd='123' and email='xs' 无法命中索引 - like - 函数 - > - != - group by - or 名词: - 覆盖索引:在索引文件中就可以把想要的数据得到,不需要再去物理表中查询 - 视图,虚拟表。放在数据库 - 触发器,在对某张表进行:增、删、改的前后自定义操作。 - 函数,对数据中的值进行操作。 - 索引合并:使用多个单列索引去查找数据。 https://www.cnblogs.com/wupeiqi/articles/5716963.html 5.索引实现原理 - B+ tree 指数增长(使用最多) - hash 较少使用 6.优化方案: - 不使用select * - 短索引 - 使用链表(join)代替子查询 - 固定长度在前面 - 分库分表 - 水平分表 - 垂直分表 - 组合索引 > 索引合并 - 内存代替链表 - Djnago里面ORM字段(choices) - 查询一条数据时用limit - 读写分离(主从) - 分页 - 缓存(热点数据放redis) 注意:char 占用固定长度字节 varchar 占用本身大小字节 - 对于不确定的sql语句先执行 -- explain select * from tb; - 查询时的访问方式,性能:all < index < range < index_merge < ref_or_null < ref < eq_ref < system/const 7.什么时候需要加锁? - 计数 - 应用场景: - 商品数量 8.慢日志? - 查询时间久 - 未命中索引 修改配置: slow_query_log = ON/OFF 是否开启慢日志记录 long_query_time = 2 时间限制,超过此时间,则记录 slow_query_log_file = /usr/slow.log 日志文件 log_queries_not_using_indexes = ON/OFF 为使用索引的搜索是否记录
https://blog.csdn.net/jy0902/article/details/19248299 安装redis报错 http://www.cnblogs.com/wupeiqi 1. redis是什么? (做内存管理) - 配置文件:bind 0.0.0.0 port:6379 require:密码 - 是否可以持久化?AOF(快照)、RDB(记录历史记录) - 单进程、单线程 - 5大数据类型(字符串,哈希/散列/字典,列表,集合,有序集合) 2.使用连接池 -本质,维护一个已经和服务端链接成功的socket(列表) -以后再次发送数据时,直接获取一个socket,直接send数据 3.如果redis的key对应的字典中有1000w条数据,请打印所有数据 -hgetall("key") 获取所有数据服务器内存无法承受,爆栈 -hget("key", "v1") 重复操作多,频繁 -hscan_iter("key", count=100) 设置获取数据条目,可行操作 4.redis操作时,只有第一层value支持:list,dict.... 5.Django应用: -自定义使用redis -使用第三方组件 -全栈缓存 -单视图 -局部页面 补充:rest framework框架访问频率限制推荐放到 redis/memecached
· .NET 原生驾驭 AI 新基建实战系列:向量数据库的应用与畅想
· 从问题排查到源码分析:ActiveMQ消费端频繁日志刷屏的秘密
· 一次Java后端服务间歇性响应慢的问题排查记录
· dotnet 源代码生成器分析器入门
· ASP.NET Core 模型验证消息的本地化新姿势
· 从零开始开发一个 MCP Server!
· ThreeJs-16智慧城市项目(重磅以及未来发展ai)
· .NET 原生驾驭 AI 新基建实战系列(一):向量数据库的应用与畅想
· Ai满嘴顺口溜,想考研?浪费我几个小时
· Browser-use 详细介绍&使用文档