数据库&redis
mysql、oracle、postgreSQL、redis
10年新兵
路虽远,行者将至。事虽难,做则必成。
展开
-
缓存雪崩,缓存穿透解决方案
1. 缓存穿透:查询一个必然不存在的数据。比如文章表,查询一个不存在的id,每次都会访问DB,如果有人恶意破坏,很可能直接对DB造成影响。解决办法:对所有可能查询的参数以hash形式存储,在控制层先进行校验,不符合则丢弃。2.缓存失效:如果缓存集中在一段时间内失效,DB的压力凸显。这个没有完美解决办法,但可以分析用户行为,尽量让失效时间点均匀分布。 缓存雪崩缓存雪崩可能是因为数据未加载到缓存中,...转载 2018-04-18 17:03:41 · 449 阅读 · 0 评论 -
SQl 的隐式转换
什么叫做隐式转换? 显示转换,就是你使用转换函数进行操作。 隐式转换,就是你不使用转换函数,默认就给转换了。比如定义一个int型的变量@a,然后给变量符值 set @a = '2' ,这个就会隐式转换,把字符转换成数字了。Oracle 隐式转换1 Oracle 隐式转换 Oracle中对不同类型的处理具有显式类型转换(Explicit)和隐式类型转换(Implicit...原创 2018-04-11 15:40:38 · 4192 阅读 · 0 评论 -
Oracle迁移PostgreSQL总结
序号项目OraclePostgreSQL1当前时间SYSDATE可全部使用current_timestamp替换2序列SEQNAME.NEXTVALNEXTVAL('SEQNAME')3固定值列SELECT '1' AS COL1SELECT CAST('1' AS TEXT) AS COL14NVLNVL函数NVL可以用COALESCE函数替换5类型自动转换Oracle某些情况下支持类型自动转换...转载 2018-04-12 17:18:27 · 3124 阅读 · 0 评论 -
高并发操作、查询oracle数据库设计建议
(1)使用分布式垂直切分。由于已经使用了Oracle RAC 提供分布式的集群服务。所以对于产生大数据和高并发的表,可以采用数据库垂直分片(比如1-500号集中器的数据采集到数据库A、500-1000到B)。数据分片,是将整体数据分摊在多个存储设备上,这样每个存储设备的数据量相对就会小很多,以此满足系统的性能需求。分区可以提高可管理性、性能与可用性,从而给各种各样的应用程序带来极大的好处。当然一个...转载 2018-04-11 15:54:53 · 1636 阅读 · 0 评论 -
TRUNCATE、DROP、DELETE区别
TRUNCATE TABLE 在功能上与不带 WHERE子句的 DELETE语句相同 二者均删除表中的全部行。但 TRUNCATE TABLE 比DELETE速度快,且使用的系统和事务日志资源少。 DELETE语句每次删除一行,并在事务日志中为所删除的每行记录一项;TRUNCATE TABLE 通过释放存储表数据所用的数据页来删除数据,并且只在事务日志中记录页的释放。 TRUNCATE,D...原创 2018-04-12 17:08:35 · 113 阅读 · 0 评论 -
mysql一行数据拆分为多行数据(含分隔符的字符串截取)
实现的SQLSELECT SUBSTRING_INDEX(SUBSTRING_INDEX('7654,7698,7782,7788',',',help_topic_id+1),',',-1) AS numFROM mysql.help_topicWHERE help_topic_id < LENGTH('7654,7698,7782,7788')-LENGTH(REPLACE('7654,7698,7782,7788',',',''))+1涉及的知识点一...原创 2020-05-28 17:17:55 · 1658 阅读 · 1 评论 -
MySQL优化技巧
1. 为查询缓存优化你的查询 大多数的MySQL服务器都开启了查询缓存。这是提高性最有效的方法之一,而且这是被MySQL的数据库引擎处理的。当有很多相同的查询被执行了多次的时候,这些查询结果会被放到一个缓存中,这样,后续的相同的查询就不用操作表而直接访问缓存结果了。 这里最主要的问题是,对于程序员来说,这个事情是很容易被忽略的。因为,我们某些查询语句会让MySQL不使用缓存。请看下面的示例: 复制...转载 2018-04-12 17:21:00 · 114 阅读 · 0 评论