[精选]Mysql优化查询过程中的数据访问
共 5782字,需浏览 12分钟
·
2022-07-26 15:58
重放攻击指攻击者发送一个目的主机已接收过的包,来达到欺骗系统的目的,主要用于身份认证过程,破坏认证的正确性。重放攻击可以由发起者,也可以由拦截并重发该数据的地方进行。
字典攻击是在破解密码或密钥时,逐一尝试用户自定义词典中的可能密码的攻击方式。与暴力破解的区别是,暴力破解会逐一尝试所有可能的组合密码,而字典攻击会使用一个预先定义好的单词列表。
3.EXT3,EXT4,XFS文件系统大小?
Linux | 文件系统大小 | 单个文件大小 |
---|---|---|
ext3 | 16TB | 2TB |
ext4 | 1EB | 16TB |
xfs | 18EB | 9EB |
4.Linux 系统文件描述符:
5.Mysql日志
有多少种日志 :redo/undo
日志的存放形式 redo:在页修改的时候,先写到redo log buffer 里面,然后写到redo log 的文件系统缓存里面(fwrite),然后再同步到磁盘文件(fsync)。
Undo:在MySQL5.5之前,undo只能存放在ibdata*文件里面,5.6之后,可以通过设置innodb\_undo\_tablespaces参数把undo log存放在ibdata*之外。
6. Mysql json类型
5.7.8开始,mysql开始支持json数据类型,json数据类型存储时会做格式检验,不满足json格式会报错,json数据类型默认值不允许为空。
优势:
存储上类似text,可以存非常大的数据。
JSON有效性检查:插入的数据必须是JSON类型的字符串才行。
相比于传统形式,不需要遍历所有字符串才能找到数据。
支持索引:通过虚拟列的功能可以对JSON中部分的数据进行索引
7. Mysql索引创建原则
8. 索引的注意事项
复合索引遵循左前缀原则
like 查询,%不能在前,可以使用全文索引
column is null 可以使用索引
如果 MySQL 估计使用索引比全表扫描更慢,会放弃使用索引
9.查询速度慢的原因
打开慢查询日志,通过 pt-query-dugest 分析
#看一下当前mysql数据库是否开启了慢查询
show variables like 'slow_query%';
#临时开启
set global slow_query_log='ON';
#永久开启:修改配置文件my.cnf,在[mysqld]下的下方加入,重启mysql服务
[mysqld]
slow_query_log = ON
slow_query_log_file = /var/lib/mysql/tmp_slow.log //linux
long_query_time = 1show profile,通过 set profiling=1;开启,服务器上执行的所有语句消耗时间都会记录到临时表。show profile for query QUERY_ID 查询指定查询 show status,查询一些计数器,猜出哪些代价高或消耗时间多 show processlist,查询线程状态进行分析 explain,分析单个 SQL 语句查询
10.Mysql优化查询过程中的数据访问
11.优化长难的查询语句
MySQL 内部每秒能扫描内存中上百万行数据,相比之下,响应数据给客户端就要慢得多
将一个大的查询分解为多个小的查询
分解关联查询,将一个关联查询分解为多个 sql 来执行,让缓存效率更高,执行单个查询可以减少锁的竞争,在应用层做关联可以更容易对数据库进行拆分,查询效率会有大幅提升,较少冗余记录的查询
12 .优化特定类型的查询语句
优化 count()查询,count(*)会忽略所有列,直接统计所有列数,因此不要用 count(列名)
优化关联查询,确定 ON 或者 USING 子句的列上有索引;确保 GROUP BY 和 ORDER BY 中只有一个表的列,这样 MySQL 才有可能使用索引
优化子查询,可使用关联查询替代
优化 GROUP BY 和 DISTINCT,建立索引进行优化
优化 LIMIT 分页,可以通过记录上次查询的最大 ID,如果根据 id 排序时,下次查询根据该 ID 来查 询(如:ID > maxID)
优化 UNION 查询,UNION ALL 性能比 UNION 高
13.高并发常见单位
PV:综合浏览量(Page View),即页面浏览量或者点击量,一个访客在 24 小时内访问的页面数量。同一个人浏览你的网站同一个页面,只记作一次 PV
二八定律(80%的访问量集中在 20%的时间):(总 PV 数 80%)/(6 小时秒速 20%)=峰值每秒请求数(QPS)
14.常用性能测试工具 ab
# 模拟并发请求 100 次,总请求 5000 次
ab -c 100 -n 5000 http://example.com
200 请求成功2. 204 not content
206 reset content
301 永久重定向
302 临时重定向
307 临时重定向
400 错误请求
401 缺少认证信息
403 拒绝
404 不存在
500 服务器异常
502 Bad Gateway
503 服务器超负载或停机维护
16.OSI 七层协议
17. HTTP 协议常见请求头/响应头
Content-Type 指定数据内容类型
Accept 指定客户端能接受数据内容类型
Origin 最初请求来源(POST)
Cookie
Cache-Control 指定请求的缓存机制
User-Agent 用户浏览器信息
Referrer 上级请求路径
X-Forwarded-For 请求端真实 ip
Access-Control-Allow-Origin 允许其他请求域名,用于跨域
Last-Modified 最后响应时间
18.算法,逻辑结构,存储结构的关系
一个算法的设计取决于所选定的逻辑结构,而算法的实现依赖于所采用的存储结构。
顺序存储结构:用数据元素在存储器中的相对位置来表示数据元素之间的逻辑结构(关系)。
链式存储结构:在每一个数据元素中增加一个存放另一个元素地址的指针(pointer ),用该指针来表示数据元素之间的逻辑结构(关系)
19.PHP伪类型
伪类型:假类型,实际上在PHP中不存在的类型。但是通过伪类型可以帮助程序员去更好的查看操作手册从而更方便学习。
mixed混合类型:多种PHP中的数据类型
number数字类型:任意数值类型(整形和浮点型)
callback回调类型:回调函数作为参数
20.PHP-FPM的运行方式及优缺点?
static :表示在 php-fpm 运行时直接 fork 出 pm.max_chindren 个子进程,
dynamic:表示,运行时 fork 出 start_servers 个进程,随着负载的情况,动态的调整,最多不超过 max_children 个进程。
21.PHP常用信息函数
phpinfo — 输出关于 PHP 配置的信息
phpversion — 获取当前的PHP版本
php_sapi_name — 返回 web 服务器和 PHP 之间的接口类型
ini_get — 获取一个配置选项的值
ini_get_all — 获取所有配置选项
ini_restore — 恢复配置选项的值
ini_set — 为一个配置选项设置值
服务端过程:先初始化 Socket,建立流式套接字,与本机地址及端口进行绑定,然后通知 TCP,准备好接收连接,调用 accept() 阻塞,等待来自客户端的连接。如果这时客户端与服务器建立了连接,客户端发送数据请求,服务器接收请求并处理请求,然后把响应数据发送给客户端,客户端读取数据,直到数据交换完毕。最后关闭连接,交互结束。详述WebSocket原理 视频 | 一步步教你操作websocket通知案例
23.PHP数组结构及排序原理
申请n个额外空间
遍历双链表 调用排序函数zend\_qsort(内部是快速排序算法)对数组排序
调用排序函数zend\_qsort(内部是快速排序算法)对数组排序
排序后,双链表中节点的位置发生变化,因而调整指定指向
遍历数组,分别设置每一个节点的pListLast和pListNext
设置HashTable的pListTail