1.mysql有哪两个主要的存储引擎 区别呢?
2.存储过程与存储函数的区别?
3.数据库的优化 罗列一些
三.数据库优化补充
4.缓存优化 [以mysql为例]
-数据库自身查询缓存 my.ini:query_cache_type/query_cache_size 查询缓存命中 show status like'%Qcache%'
-借助orm框架的一级缓存/二级缓存
-借助spring cache+redis做应用级缓存
三.数据库优化补充
4.缓存优化 [以mysql为例]
-数据库自身查询缓存 my.ini:query_cache_type/query_cache_size 查询缓存命中 show status like'%Qcache%'
-借助orm框架的一级缓存/二级缓存
-借助spring cache+redis做应用级缓存
三.数据库优化
1.sql语句的优化
-不用*号 用字段名
-多个where条件的先后顺序调整
-模糊查询尽量用全文搜索框架solr/elastic等 而不是like 一定要用like时 注意尽量避免两边%通配符 实在避免不了两边%的 还可以考虑position函数
或locatiotion函数
-子查询时 内表较小用in 外表较小用exists
2.库表结构优化
-合理建立索引
-合理设置冗余字段 减少联表
-合理进行分库分表 读写分离等等
3.硬件优化
-如固态硬盘装数据库
-如硬盘阵列增大数据IO
二.存储过程与存储函数的区别?
1.存储过程无返回 用输出参数变通 自定义函数有返回
2.存储过程的职责是业务逻辑 是部分代替程序的service层 调用时用call语句
-而自定义函数是系统函数sum/max/min/...等的补充 功能针对性强 用sql语句调用
3.存储过程常用于对数据库做CRUD及逻辑计算等各种混合操作
-而自定义函数一般只用于读值计算 不用于写表
-并不是说自定义函数绝对不能写表 而是一般不这么用