企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
>[info] 数据库三范式及理解 * **第一范式:** **人员** 字段可以再拆分,不是`原子性`字段,可以继续拆分。 | 人员 | 余额 | | --- | --- | | 三毛,男,90 | 80 | * **第二范式**:每一行数据都要是唯一的。 | id | 人员 | 余额 | | --- | --- | --- | --- | --- | | 1 | 三毛,男,90 | 80 | | 2 | 三毛,男,90 | 80 | * **第三范式**:防止`冗余`,**地址** 和 **毕业院校** 应当使用另一张表,用户表存储id即可。 | id | 人员 | 余额 | 地址 | 毕业院校 | | --- | --- | --- | --- | --- | | 1 | 三毛,男,90 | 80 | xxx地址 | xxx地址 | | 2 | 三毛,男,90 | 80 | xxx地址 | xxx地址 | | id | 地址 | 毕业院校 | | --- | --- | --- | | 1 | xxx地址 | xxx地址 | >[info] 分库分表带来的问题 1. **分布式事务:** 2pc、3pc、tcc、mq 2. **关联查询:** 全局表、冗余、数据组装 **2.1 全局表:** * 要在所有的分片上保存一份数据即可,Mycat 在Join操作中,业务表与全局表进行Join聚合会优先选择相同分片内的全局表join, * 避免跨库Join,在进行数据插入操作时,mycat将把数据分发到全局表对应的所有分片执行,在进行数据读取时候将会随机获取一个节点读取数据。 3. **分页排序:** **数据异构:** 订单表(买家分表),用时间换空间,卖家也存一份数据。解决跨表问题,违背三范式。(1份数据保存多份) ![](https://img.kancloud.cn/d8/37/d837ef33c649809dd2f00767e6154022_302x189.png) 4. **统计:** 4.1 统计表:定时推送数据,订单金额一直相加。 | 日期 | 订单金额 | | --- | --- | | 2022-01-01 | 10 | | 2022-01-02 | 20 | 4.2 大数据分析工具: es(分片机制) 5. **数据扩容,后续拓展:** 6. **数据迁移:** >[info] 性能分析工具 ab、jemeter、elk日志分析工具、xdebug、xhprof、linux top命令 ![](https://img.kancloud.cn/fb/68/fb68f5ff87260a4cf720237fdae26bb8_604x173.png) >[info] 如何架构一个亿级pv >[info] 索引失效问题 >[info] redis 的使用场景 缓存、队列、秒杀、排行榜、计数 ![](https://img.kancloud.cn/cf/99/cf9982684e2a47db629f452aae7d4f27_483x284.png) >[info] 依赖注入与容器 1. new usb() 写死 ![](https://img.kancloud.cn/27/56/2756fc7725e032ad8b008d550fb1c83c_923x620.png) 2. 作为参数传入(控制反转)降低耦合 ![](https://img.kancloud.cn/de/8e/de8ef234d3c4d21d972c7507703dfafa_467x340.png) 3. 容器:把多个实例放到一个对象中 ![](https://img.kancloud.cn/43/02/4302b3bf4f24f64e02d06e30edec8145_631x556.png) >[info] 三私一公 **单例模式:** priviate 私有的,只能通过公共方法去获取单例,并不能实例化。 >[info] es 中倒排索引原理 **文章:** | id | content | | --- | --- | | 1 | 容器与依赖注入的原理 | | 2 | 容器与xx的原理 | 搜索 **容器** 直接 得到 1 容器 1 原理 1,2 >[info] php 框架单入口和多入口 index.php、admin.php、api.php >[info] fastcgi 和 phpcgi、php-fpm **CGI:** 公共网关接口协议, nginx 和 后端通讯,每次通讯会临时新建一个进程。 ![](https://img.kancloud.cn/4e/44/4e444d7541d9d38838c97661a16c9f58_515x298.png) **FAST-CGI:** CGI升级版,php-fpm 启动会新建6个进程,常驻内存。 **PHP-CGI:** PHP 脚本解析器 **PHP-FPM:** 进程管理器,管理php-cgi进程 >[info] 进程、线程、协程 **进程:** 资源分配最小单位,抢占电脑内存资源。 **线程:** 程序CPU执行最小单位,不停切换(CPU完成 / 时间轮片),切换需要消耗资源。 **协程:** 比线程单位小,多个协程合并映射到内核态在1个线程里面跑。 ![](https://img.kancloud.cn/b7/70/b770a4c2057535a4ca27b9e86689ba9c_1071x803.png) ![](https://img.kancloud.cn/52/9e/529e099e2f652094ba82b16c2b8137e2_524x203.png) >[info] btree 和 b+tree **b-tree:** 多路搜索树 **平衡二叉树:** 二分查找法 ![](https://img.kancloud.cn/cc/7b/cc7bdeb0377ce948091925914fb712e1_1629x781.png) **b+tree:** 链表,当前元素存了下一个元素的地址。 数据存在叶子节点,分支节点只做索引。 ![](https://img.kancloud.cn/37/4b/374b7bb30ed383b93621b50ca7939d6c_1132x464.png)