mysql导出文件
The MySQL server is running with the –secure-file-priv option so it cannot execute this statement.
问题产生原因为导入文件路径与mysql限制路径不符
–secure-file-priv这个参数,这个参数的主要目的就是限制LOAD DATA INFILE或者SELECT INTO OUTFILE之类文件的目录位置,通过show variables like ‘%secure%’查看目录,
如果要解决这个问题,我们可以通过下面2种方式:
- 将你要导入或导出的文件位置指定到你设置的路径里
- 由于不能动态修改,我们可以修改my.cnf里关于这个选项的配置,然后重启即可。
导出语句
1 | SELECT |
mysql 死锁问题
1 | -- 查询是否锁表 |
mysql 开启日志
1 | -- 查看日志目录 |
数据导出
1 | SELECT |
mysql查询优化
避免使用数据类型隐形转换查询
比如 where id =’11’禁止使用select *
原因为
消耗更多的 CPU 和 IO 以网络带宽资源
无法使用覆盖索引
可减少表结构变更带来的影响避免使用子查询,尽量优化成join查询,
原因:
子查询的结果集无法使用索引,通常子查询的结果集会被存储到临时表中,不论是内存临时表还是磁盘临时表都不会存在索引,所以查询性能会受到一定的影响。特别是对于返回结果集比较大的子查询,其对查询性能的影响也就越大。
由于子查询会产生大量的临时表也没有索引,所以会消耗过多的 CPU 和 IO 资源,产生大量的慢查询。
- 避免使用 JOIN 关联太多的表
同一个 SQL 多关联(join)一个表,就会多分配一个关联缓存,如果在一个 SQL 中关联的表越多,所占用的内存也就越大。
如果程序中大量的使用了多表关联的操作,同时 join_buffer_size 设置的也不合理的情况下,就容易造成服务器内存溢出的情况,就会影响到服务器数据库性能的稳定性。
同时对于关联操作来说,会产生临时表操作,影响查询效率,MySQL 最多允许关联 61 个表,建议不超过 5 个。
对应同一列进行 or 判断时,使用 in 代替 or
in 的值不要超过 500 个,in 操作可以更有效的利用索引,or 大多数情况下很少能利用到索引。禁止使用 order by rand() 进行随机排序
WHERE 从句中禁止使用函数
对列进行函数转换或计算时会导致无法使用索引
/var/folders/cg/jgb9m4xx2870hb8d1znjh9gr0000gn/T/weixin-java-tools-temp8614819456245449227/02b3aa82-44da-4446-87bb-5c92bc6c9ed23961081022181802356.jpg”,
innodb与mysiam区别
- 事务:innodb支持事务,MyISAM不支持
- 行数: innodb不存储数据行数,myisam存储,select count(*) 很快
- 索引不同:innodb是聚集索引,索引与数据存放在同一文件,
- 外键支持: innodb支持外键,mysiam不支持
- 锁不同: innodb支持行锁,mysiam只支持表锁
ygsd2021
$2a$10$XTHe4M242KPSyi0sU/3E5.quy8FAHDNtuvwQ.YgmFsQPaYIvMzfLO
$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2