一个虚拟主机可以做两个网站吧,传奇网页游戏排行,网站做流量怎么赚钱的,iis wordpress单表优化最佳左前缀原则为#xff0c;保持索引的定义和使用顺序的一致性将含In的范围查询#xff0c;放到where条件语句的最后。索引需要逐步优化两表优化小表驱动大表避免索引失效的一些原则#xff1a;复合索引#xff0c;不要跨列或无序使用#xff08;最佳左前缀…单表优化最佳左前缀原则为保持索引的定义和使用顺序的一致性将含In的范围查询放到where条件语句的最后。索引需要逐步优化两表优化小表驱动大表避免索引失效的一些原则复合索引不要跨列或无序使用最佳左前缀复合索引尽量使用全索引匹配。就是尽量避免复合索引有三列而只用到两列。复合索引不能使用范围查询! 或is null (is not null),否则自身及右侧索引全部失效。不要对索引进行操作计算函数类型转换否则索引失效。select .. where A.x*3 ...
-- A.x列存在索引索引失效注意SQL优化是一种概率层次的优化原因是服务层中有SQL优化器可能会影响我们的优化出现与我们预期不符的情况。尽量不要使用or会使左右两边索引全部失效。其他的优化方法exist 和 in 如果主查询的数据极大则使用in如果子查询的数据大则使用exist。order by 选择使用单路还是双路调整buffer容量的大小避免使用select *...复合索引不要跨列使用。SQL慢查询日志MySQL提供的一种日志记录用于记录MySQL中响应超过阈值的SQL语句默认是10秒慢查询日志默认是关闭的建议开发时打开最终部署时关闭。查看慢查询日志是否开启sql show variables like %slow_query_log%;临时开启慢查询日志(在内存中开启)将服务重启后关闭。set global slow_query_log 1;永久开启慢查询日志修改MySQL配置文件ini [mysqld] ... slow_query_log 1 slow_query_log_file 日志存放地址查看慢查询阈值并修改sql -- 查看慢查询阈值时间 show variables like %long_query_log%-- 修改阈值临时修改重新登录MySQL后生效不需要重启服务 set global long_query_time 5--修改阈值永久修改修改MySQL配置文件重启服务生效 [mysqld] ... long_query_time 5 查询超过阈值的SQLsql show global status like %slow_queries% -- 当然这种方法只能查看超过阈值的SQL条数具体的SQL语句还是要通过查看上面设置的慢查询日志来确定使用mysqldumpslow工具来查询慢SQL 通过查看日志的方式虽然可行但是当我们的SQL语句多了之后慢SQL语句也随之变多这样一来查看慢sql日志就成了一件费时费力的事且日志内容较多容易造成混乱。使用mysqldumpslow工具可以主动的过滤出我们希望查看的慢SQL语句比如可以对吗慢SQL语句进行排序进行正则匹配只取10条数据等等。PROFILES分析海量数据-- 查看profiles是否开启
show variables like %profiling%;查看SQL语句执行的Query_id以及持续时间show profiles; 注意 show profiles可以看到profiling打开之后的SQL语句会显示ID持续时间以及SQL语句但是我们无法精准的看到各个硬件消费的时间。查看SQL语句执行的具体硬件消费情况-- 查看全部信息
show profile all for query Query_id;-- 查看部分信息
show profile cpu, block io for query Query_id;全局查询日志全局查看日志会记录开启之后的全部SQL语句因此比较耗费性能。所以我们仅在调优、开发时使用。而且全局查询日志信息较少所以使用较少。 使用方法-- 查看是否开启
show variables like %general_log%;-- 开启全局查询日志
SET GLOBAL general_log 1;
SET GLOBAL log_outputtable; -- 表明我们将SQL存在表里。mysql.general_log表。SET GLOBAL log_outputfile;
SET GLOBAL general_log_file目录/general.log; -- 表明将SQL存储在文件里
SET GLOBAL general_log 1; -- 如果无效就需要再开启一下锁机制MyISAM只支持表锁InnoDB支持表锁和行锁-- 加锁
lock table 表1 read/write, 表1 read/write...;
-- 释放锁
unlock tables;-- 查看表加锁情况
show open tables;读锁共享锁会话1 对 A 表加 读 锁会话1可以读取A表数据但不能修改。不可以读写其它表数据。其它会话可以读取A表数据如果修改的话必须要等会话1将读锁释放。可以读写其它表数据。| | 会话1 | 其他会话 | | ------ | ---------------- | --------------------------------------- | | A表 | 可以读不可以写 | 可以读取想要更新必须等待会话1释放表锁 | | 其他表 | 不可以读写 | 可以读写 |写锁互斥锁会话1 对 A 表加 写 锁会话1可以对A表进行增删改查但是不能操作其他表。其他会话想要读写A表必须等会话1释放写锁可以正常操作其他表。关闭自动提交-- 以下三种方式都可以
set autocommit0;
start transaction;
begin;主从复制集群和分布式用板砖来比喻一开始一个人负责搬砖和运砖后来工头嫌他慢又找了几个人帮他一起搬砖运砖这叫集群多个服务器支持一个项目。后来工头还不满足就让一群人专门负责搬砖另一群人专门负责运砖这叫分布式一个项目划分为几个部分。主从复制大概过程
pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …