MySql
开放3306端口:firewall-cmd --zone=public --add-port=3306/tcp --permanent
更新防火墙规则:firewall-cmd --reload
查看防火墙开放端口:firewall-cmd --zone=public --list-ports
2.4、更改mysql远程连接:需要新密码重新登录mysql
登录:mysql -u root -p
password:最新密码
切换数据库:use mysql
更改远程连接:Update user set host='%' where user='root';
2.5、重启mysql:systemctl restart mysqld 或 service mysqld restart
1)、存储的结构和方式不一样:InnoDB采用聚簇索引(索引和数据是关联在一起),MyISAM采用非聚簇索引(索引和数据文件是分离的,索引保存数据文件的指针)
2)、事务:InnoDB支持,MyISAM不支持
3)、锁:InnoDB支持表级锁和行级锁,MyISAM支持表级锁
表级锁:开销小,加锁快,不会出现死锁;锁定粒度大,发生冲突概率高,并发度最低
行级锁:开销大,枷锁慢,会出现死锁;锁定粒度小,发生冲突概率低,并发度最高
4)、主键:InnoDB必须有主键(默认生成主键索引),MyISAM可以没有
5)、外键约束:InnoDB支持,MyISAM不支持
6)、InnoDB辅助索引和主键索引之间存在层级关系;MyISAM辅助索引和主键索引则是平级关系。因此主键不应该过大,其他索引也相应会很大
5)、故障恢复:InnoDB使用redo和undo日志记录数据修改记录确保数据持久性,数据库异常通过日志可恢复,保证数据的持久性和一致性。MyISAM不支持崩溃恢复
6)、其他:InnoDB不报错表的具体行数,执行select count(*)全表扫描,MyISAM保存整个表行数,执行效率快;InnoDB不支持全文检索(Mysql 5.7版本后也支持了),MyISAM支持全文检索效率高
2、为什么用B+树
1、B+树和B树区别:
1)、B+树只在叶子节点存储数据,B树的非叶子节点也要存储数据。B+树单个节点数据库量更小,在相同的磁盘IO次数下,能查询到更多节点。
2)、B+树叶子节点采用双链表连接,适合mysql基于范围查找,B树无法做到
2、B+树和二叉树区别:
1)、B+树高度能维持在3~4层左右,一次数据查询操作只需3~4次磁盘IO操作,查询夫再度O(logdN);二叉树每个父节点的子节点智能是2个,层数较高,磁盘IO次数较多,查询复杂度O(logN)
3、B+树和Hash区别:
1)、Hash不适合范围查找,适合等职查询O(1)
3、mysql索引优化
1、哪些索引会失效
1)、区分度比较低的字段建立索引
2)、使用like %xx 或者 like %xx%会造成索引失效
3)、使用列运算、函数方法和类型转换
4)、联合索引未遵循最左匹配原则
5)、is null, is not null无法使用索引
6)、负向条件无法使用索引:例如!=、<>、not in、not exists、not like 等
2、具体索引优化建议
1)、union、in、or都能使用索引,建议用in
2)、负向条件无法使用索引,例如not in可以优化成in
3)、联合索引最左匹配原则
1、区分度最高的放在最左边
2、存在非等号和等号混合判断,等号放在前面,例如where a>1 and b=2,把b=2放在前面
4)、where条件多个范围,最多用于左边一个范围列,范围条件有:<、<=、>、>=、between等
5)、索引列不要用任何运算和函数方法
6)、强制类型转换会导致全表扫描,例如字符串字段等于数字
7)、更新频率高于80%不要建立索引,性能和全表扫描相近,count(distinct(列名))/count(*)计算
8)、利用覆盖索引查询,避免回表。查询的列和建立索引的列个数和字段相同,避免select *
9)、索引不会包含有null值的列
10)、is null和is not null 无法使用索引
11)、order by、group by,注意索引的有序性,where a=1 and b=2 and c=3 index(a,b,c);如果索引有范围,有序性无法利用,例如where a>1 order by b
12)、使用段索引(前缀索引):节省磁盘空间和io操作,减少索引文件的维护开销,用count(distinct leftIndex(列名, 索引长度))/count(*) 来计算前缀索引的区分度。缺点是不能用于 ORDER BY 和 GROUP BY 操作,也不能用于覆盖索引
13)、延迟关联和子查询优化分页:当行较深,效率低,改写sql通过id条件过滤
4、java调用存储参数化执行慢,存储重新创建或者执行OPTION(RECOMPILE)
sql语句数据库查询速度很快,java中使用sqlQuery速度很慢--OPTION(RECOMPILE)-CSDN博客
原文地址:https://blog.csdn.net/u011627218/article/details/139081761
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!