首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

php开发工程师面试题知识点总结(四)–高级篇「建议收藏」

进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。 在单个程序中同时运行多个线程完成不同的工作,称为多线程。...() 转成长整型存储 索引优化 索引创建原则 索引不是越多越好,在合适的字段上创建合适的索引 复合索引的前缀原则 索引注意事项 复合索引的前缀原则 like查询%的问题 全表扫描优化...or条件索引使用情况 字符串类型索引失效的问题 SQL语句的优化 优化查询过程中的数据访问 使用 Limit 返回列不用* 优化长难句的查询语句 变复杂为简单 切分查询...存储引擎的优化 尽量使用 Inno DB存储引擎 数据表结构设计的优化 分区操作 通过特定的策略对数据表进行物理拆分 对用户透明 partition by 分库分表 水平拆分...七层负载均衡实现 基于URL等应用层信息的负载均衡 Nginx的 proxy是它一个很强大的功能,实现了7层负载均衡 nginx负载均衡 优点 功能强大,性能卓越,运行稳定 配置简单灵活 能够自动剔除工作不正常的后端服务器

47310

被百度严格拷打 62 分钟,汗流浃背!

归并排序(Merge Sort):将数组不断分割为更小的子数组,然后将子数组进行合并,合并过程中进行排序。...数据库的索引和数据都是存储在硬盘的,我们可以把读取一个节点当作一次磁盘 I/O 操作。那么上面的整个查询过程一共经历了 3 个节点,也就是进行了 3 次 I/O 操作。...然后有两个并发的事务,事务 A 只负责查询余额,事务 B 则会将我的余额改成 200 万,下面是按照时间顺序执行两个事务的行为: 在不同隔离级别下,事务 A 执行过程中查询到的余额可能会不同: 在「读未提交...如果数据量太大,影响了查询效率,可以考虑分库分表。 分库是一种水平扩展数据库的技术,将数据根据一定规则划分到多个独立的数据库中。每个数据库只负责存储部分数据,实现了数据的拆分和分布式存储。...分表指的是将单个数据库中的表拆分成多个表,每个表只负责存储一部分数据。这种数据的垂直划分能够提高查询效率,减轻单个表的压力。分表主要是为了解决单表数据量太大,导致查询性能下降的问题。

51710
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    php开发工程师面试题知识点总结(四)--高级篇

    进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。 在单个程序中同时运行多个线程完成不同的工作,称为多线程。...:事件发生后回调指定的函数 常见reactor模型 Nginx:多线程 Reactor Swoole:多线程 Reactor+多进程Worker 数据库缓存 mysql查询缓存 查询缓存可以看做是SQL...优化查询过程中的数据访问 使用 Limit 返回列不用* 优化长难句的查询语句 变复杂为简单 切分查询 分解关联查询 优化特定类型的查询语句 优化 count() 优化关联查询 优化子查询 优化 Group...by和 distinct 优化 limit和 union 存储引擎的优化 尽量使用 Inno DB存储引擎 数据表结构设计的优化 分区操作 通过特定的策略对数据表进行物理拆分 对用户透明 partition...七层负载均衡实现 基于URL等应用层信息的负载均衡 Nginx的 proxy是它一个很强大的功能,实现了7层负载均衡 nginx负载均衡 优点 功能强大,性能卓越,运行稳定 配置简单灵活 能够自动剔除工作不正常的后端服务器

    48610

    数据库调优笔记

    SIMPLE(简单SELECT,不使用UNION或子查询等) PRIMARY(查询中若包含任何复杂的子部分,最外层的select被标记为PRIMARY) UNION(UNION中的第二个或后面的SELECT...语句) DEPENDENT UNION(UNION中的第二个或后面的SELECT语句,取决于外面的查询) UNION RESULT(UNION的结果) SUBQUERY(子查询中的第一个SELECT)...DEPENDENT SUBQUERY(子查询中的第一个SELECT,取决于外面的查询) DERIVED(派生表的SELECT, FROM子句的子查询) UNCACHEABLE SUBQUERY(一个子查询的结果不能被缓存...要想强制MySQL使用或忽视possible_keys列中的索引,在查询中使用FORCE INDEX、USE INDEX或者IGNORE INDEX。...总结: EXPLAIN不会告诉你关于触发器、存储过程的信息或用户自定义函数对查询的影响情况 EXPLAIN不考虑各种Cache EXPLAIN不能显示MySQL在执行查询时所作的优化工作 部分统计信息是估算的

    91221

    分布式 | 实战:将业务从 MyCAT 平滑迁移到 dble

    ,兼容了原环境 mycat 上的拆分算法,因此原 mycat 环境的存储节点数据也不需要再做任何变动。...这极大的减少了我们迁移的工作量。 4、业务 SQL 经过几轮测试下来,我们发现mycat在很多时候会将SQL直接下发到后端节点,这就造成了我们在测试时碰到了很多问题,因为DBLE对多种情况做了细分。...sql进行广播下发(下发至表关联的所有节点),这种机制在某些情况下是无法保证正确性的 3.多表关联更新不支持,dble作为一个中间件产品,处理的某一类的sql,对于这类sql正确的处理方法是需要先将子查询下发...4.为了保证update+子查询这类sql的正确性,肯定不能用mycat这种广播下发来做,所以对于这类sql目前是不支持的 全局表+分片表类型SQL支持 ERROR 4004 (HY000): Unknown...(其实可以计算,dble 在 2.20.04.x 版本及之后已优化) 3.mycat 会直接下发语句到节点中,全局表在每个配置的节点都会存储相同的数据,如果将每个节点和拆分表 Left Join 的结果进行简单的

    33530

    在PowerDesigner中设计物理模型3——视图、存储过程和函数

    视图 在SQL Server中视图定义了一个SQL查询,一个查询中可以查询一个表也可以查询多个表,在PD中定义视图与在SQL Server中定义查询相似。...存储过程和函数 存储过程和用户自定义函数都是在同一个组件中设置的,在工具栏中单击Procedure按钮,然后在设计面板中单击一次便可添加一个Procedure。...例如要创建一个存储过程根据学生的学号获得学生所选的课程,那么对于的操作如下: 在指针模式下双击添加的Procedure,打开Procedure属性窗口,在General选项卡中可以设置该存储过程的名字。...然后切换到Definition选项卡,该选项卡中定义了存储过程的定义,在下拉列表框中,选择选项,如果是要定义函数,那么就需要选择...至此,最常见的数据库对象:表(表的约束)、视图、存储过程、函数等在PD的创建已经介绍完了,接下来会介绍PD的设置。

    2.9K20

    分布式 | 实战:将业务从 MyCAT 平滑迁移到 dble

    ,兼容了原环境 mycat 上的拆分算法,因此原 mycat 环境的存储节点数据也不需要再做任何变动。...这极大的减少了我们迁移的工作量。 4、业务 SQL 经过几轮测试下来,我们发现mycat在很多时候会将SQL直接下发到后端节点,这就造成了我们在测试时碰到了很多问题,因为DBLE对多种情况做了细分。...按照目前的执行计划,mycat对于update+子查询采用的是将源sql进行广播下发(下发至表关联的所有节点),这种机制在某些情况下是无法保证正确性的 3....为了保证update+子查询这类sql的正确性,肯定不能用mycat这种广播下发来做,所以对于这类sql目前是不支持的 全局表+分片表类型SQL支持 ERROR 4004 (HY000): Unknown...(其实可以计算,dble 在 2.20.04.x 版本及之后已优化) 3. mycat 会直接下发语句到节点中,全局表在每个配置的节点都会存储相同的数据,如果将每个节点和拆分表 Left Join 的结果进行简单的

    35220

    订单下单

    (1)在订单过程中进行安全校验,主要是检测用户是否在黑名单上、用户购买行为是否正常等,当检测到不正常时,终止下单。 (2)从商品中心获取商品信息(SKU、规格、价格等)。...更多的情况,用户在App上浏览车辆,然后跟销售人员约定现场看车的时间和地点,看车之后再决定要不要。这个过程中,销售人员会有很复杂的撮合和客户维护工作。...如下图所示,在存储的订单信息中,主要包含以下内容:用户信息、订单基础信息、收货信息、商品信息、优惠信息、支付信息、物流信息、其他信息等。...【父订单与子订单】 当从购物车选中多件商品时,例如选中三个店铺中的商品,会将这次购买行为拆分成三个店铺的订单。...父订单与子订单这里描述更像是因为履约阶段的需要,必须进行拆分。瓜子的订单现在拆分是否合理,按照什么拆分更好呢?

    3.7K21

    “别人用Unity写代码为啥这么快,这么强”,“因为用了工具类呀”

    一、导言 在开发中,我们会将调用次数比较多的函数单独提出来写到一个类中,比如字符串转16进制,给字符串加密这些都是比较常用的,就可以将这些常用的函数提取出来,放到工具类中,方便调用 二、工具类 2-1、...查找对象 根据父物体对象,找到指定名字的子物体,返回GameObject对象 //child 是要查询的物体的父节点,name是要查询的子物体的名字 public static GameObject...Find(GameObject child, string name) { //定义一个Transform 变量it用来接收查询到子物体 Transform it...,返回的是指定组件的对象 //child 是要查询的物体的父节点,name是要查询的子物体的名字 返回的是一个泛型 public static T Find(GameObject child..., string name) { //定义一个Transform 变量it用来接收查询到子物体 Transform it = child.transform.Find

    94210

    PHP面试-复习知识点整理

    使用尽可能少的查询是好的,但是有时将一个大的查询分解为多个小的查询是很有必要的 分解关联查询,将一个关联查询分解为多个sql来执行,让缓存效率更高,执行单个查询可以减少锁的竞争,在应用层做关联可以更容易对数据库进行拆分...分区字段中如果有主见和唯一索引列,那么主键和唯一列都必须包含进来 分区表中无法使用外键约束 需要对现有表的结构进行改变 所有分区都必须使用相同的存储引擎 分区函数中可以使用的函数和表达式会有一些限制...,排序好的元素要满足:父节点的元素要大于子节点;这个过程叫做堆化过程,如果根节点存放的最大的数,则叫做大根堆,如果是最小,就叫小跟堆,可以把根节点拿出来,然后再堆化,循环到最后一个节点 时间复杂度:最坏...进程内一个相对独立的、可调度的执行单元,是系统独立调度和分派CPU的基本单位指运行中的程序的调度单位。 在单个程序中同时运行多个线程完成不同的工作,称为多线程。...存储引擎的优化 尽量使用 Inno DB存储引擎 数据表结构设计的优化 分区操作 通过特定的策略对数据表进行物理拆分 对用户透明 partition by 分库分表 水平拆分

    1.1K20

    Sentry 监控 - Snuba 数据中台架构(Query Processing 简介)

    在逻辑处理阶段(完全基于实体)结束时,存储选择器可以检查查询并为查询选择合适的存储。存储选择器在实体数据模型中定义并实现此接口。...两个例子是时间拆分和列拆分。两者都在下面这个文件中。...为了使这项工作发挥作用,每个步骤都必须考虑连接的查询和子查询,这会增加过程的复杂性。 为了解决这个问题,我们将每个连接查询转换为多个简单子查询的连接。...此类查询的查询处理管道由与上述内容相关的几个附加步骤组成。 子查询生成器(Subquery Generator) 该组件采用一个简单的 SnQL 连接查询,并为连接中的每个表创建一个子查询。...这一步基本上是一个连接优化器(join optimizer),它将所有可以成为子查询一部分的表达式下推到子查询中。

    88210

    一文详解TDSQL PG版Oracle兼容性实践

    下方是DN数据节点,即实际存储数据的地方,每个数据节点会存储一部分用户数据,所有的DN节点合起来形成完整的用户数据集。管控系统则负责整个集群的节点资源分配、监控告警、运维管理、自动化操作过程等工作。...在调用方面,Oracle存储过程的调用支持三种形式:call后加存储过程名称、exec后加存储过程名称、直接调用存储过程名称,而PostgreSQL中只能使用call进行调用,TDSQL PG版对此进行兼容改造...TDSQL PG版还具备分区子表合并拆分能力及新加分区时default分区自动移动的能力。 3.2 分区子表合并&拆分 随着时间的推移,在使用过程中,系统中的分区会越来越多。...3.4 存储过程/函数扩展语法能力 为全面兼容oracle,TDSQL PG版的存储过程和函数在创建调用语法上也进行了适配,除前面提到的函数体不需要$$包围、以/结尾、空参数不需要括号等细节外,TDSQL...3.6 PACKAGE Oracle中Package比较常见,用户常用的函数大都存储在Package中。

    2.4K20

    k8s 实践经验(五)pod 详解(1)

    文章目录 Pod 资源清单 资源配额 Pod 生命周期 Pod 的创建过程 pod的终止过程 初始化容器 钩子函数 重启策略 本篇主要是补全一下前面没有讲到的关于 Pod 的部分。...#容器的工作目录 volumeMounts: #挂载到容器内部的存储卷配置 - name: string #引用pod定义的共享存储卷的名称,需用volumes...在kubernetes中基本所有资源的一级属性都是一样的,主要包含5部分: apiVersion 版本,由kubernetes内部定义,版本号必须可以用 kubectl api-versions 查询到...volumes 存储卷,用于定义Pod上面挂在的存储信息 restartPolicy 重启策略,表示Pod在遇到故障的时候的处理策略 资源配额 容器中的程序要运行,肯定会占用一定的资源...4、kubelet在监控到pod对象转为terminating状态的同时启动pod关闭过程。

    69610

    oracle行转列、列转行、连续日期数字实现方式及mybatis下实现方式

    中的时候就非常简单了,这里就不再缀诉哈~ 使用pivot函数方式 此种方式有一个缺点是:一次查询只能对一个列的数据进行拆分(成多列),如需对多列拆分,则可行的方式是做多个查询,一个查询拆分一列(...同时保留连接字段), 同时,这里需要主要的是 在 pivot 下的in中不可以是一个子查询,记得当时调试的时候怎么调试就是报错,后来翻了翻英文网站的说明,给的大致意思是这个pivot内拆分的目标字段不可以是一个子查询...)函数或者_to_char()_函数进转换才是,如果目标值就是String类型且一定要将整个声明值使用单引号引起来('#{value}'),另外,拆分的目标列也是可以定义别名的,不然DB 又会给出pivot...,这个时候就需要使用另一个窗口函数rank(),这个函数是对组内做排序,由于目标是实现行转列,所以此时就需要将rank()的排序方式改为desc,而后再做一个子查询将rank的值为非1的全去掉。...目标数据拆分多个组来做,建议不要超过十个,而且拆分的列的数据复杂度不能太高(字符太长,正则太复杂),在mybatis下的使用中只需要注意下目标列的类型,必要时使用to_char函数进行转换才是~ 连续日期的实现方式

    2.1K20

    MySQL开发规范.pdf

    4、 禁止在数据库中存储明文密码 如果需要存储 MySQL 密码可以用 MySQL 内置函数 password()对明文密码进行 MD5 进行加密。...5、建议不要使用子查询 对于子查询,mysql 会对子查询结果返回给外部表,并对外部表进行全表扫描 6、建议将大字段、访问频率低的字段拆分到单独的表中存储,分离冷热数据 当我们的表中存在类似于 TEXT...或者是大的 VARCHAR 类型的大字段的时候,如果我们大部分访问这张表的时候都不需要这个字段,我们就该将其拆分到另外的独立表中,以减少常用数据所占用的存储空间。...7、建议用 in() /union 替换 or,并注意 in 的个数(个数多少依照具体情况而定) 8、建议尽量不使用 mysql 存储过程、触发器、函数等(依照具体情况而定) 容易将业务逻辑和 DB 耦合在一起...,并且对于目前数据量存储过程、触发器、函数等没有任何优势(存储过程、函数对大数据量的处理和复杂业务逻辑很有优势),而且 mysql 存储过程还有一定 BUG。

    79310

    Web-第二十四天 Oracle学习【悟空教程】

    结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。...TO_CHAR:字符串转换函数 范例:查询所有的雇员将将年月日分开,此时可以使用TO_CHAR函数来拆分 拆分时需要使用通配符 年:y, 年是四位使用yyyy 月:m, 月是两位使用mm 日:d, 日是两位使用...存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。...存储过程是数据库中的一个重要对象,任何一个设计良好的数据库应用程序都应该用到存储过程。...(结果变量); end[函数名]; 存储过程和存储函数的区别 一般来讲,过程和函数的区别在于函数可以有一个返回值;而过程没有返回值。

    2K20

    一张思维导图学会如何构建高性能MySQL系统

    一、简介 最近在压测新的存储,正好把工作过程中积累的对高性能MySQL相关的知识体系构建起来,做成思维导图的方式。总结乃一家之言,有不妥之处,望给位读者朋友指正。...16 innodb_write_io_threads = 16 innodb_io_capacity = 3000(PCIE卡建议更高) innodb_flush_neighbors=0 InnoDB存储引擎在刷新一个脏页时...SQL开发优化 不使用存储过程、触发器,自定义函数 不使用全文索引 不使用分区表 针对OTLP业务尽量避免使用多表join和子查询 不使用*,SELECT使用具体的列名:在发生列的增/删时,发生列名修改时...,最大限度避免程序逻辑中没有修改导致的BUG,IN的元素个数300-500 避免使用大事务,使用短小的事务:减少锁等待和竞争 禁止使用%前缀模糊查询 where like ‘%xxx’ 禁止使用子查询,...遇到使用子查询的情况,尽量使用join代替 遇到分页查询,使用延迟关联解决:分页如果有大offset,可以先取Id,然后用主键id关联表会提高效率 禁止并发执行count(*),并发导致CPU飙高 禁止使

    1.2K70
    领券