数据库
架构师修行之路
一个奔走在通往互联网更高之路的工程师,热衷于互联网技术。拥有10年+互联网开发经验。热衷于高性能、高并发、分布式技术领域的研究。 主要工作语言为asp.net c#和Golang 。
展开
-
数据库快速迁移10亿级数据
问题分析 经过几分钟的排查,数据库情况如下: 数据库采用Sqlserver 2008 R2,单表数据量21亿。 无水平或者垂直切分,但是采用了分区表。分区表策略是按时间降序分的区,将近30个分区。正因为分区表的原因,系统才保证了在性能不是太差的情况下坚持至今。 此表除聚集索引之外,无其他索引,无主键(主键其实是利用索引来快速查重的)。所以在频繁插入新数据的情况下,索引调整所耗费的性能比较低。 至于聚集索引和非聚集索引等知识,请各位移步google或者百度。 至于业务,不是太复杂。经过相关人.原创 2020-11-18 20:04:32 · 1786 阅读 · 1 评论 -
数据库的乐观锁和悲观锁并非真实的锁
开局 我们平时编写程序的时候,有很多情况下需要考虑线程安全问题,一个全局的变量如果有可能会被多个同时执行的线程去修改,那么对于这个变量的修改就需要有一种机制去保证值的正确性和一致性,这种机制普遍的做法就是加锁。其实也很好理解,和现实中一样,多个人同时修改一个东西,必须有一种机制来把多个人进行排队。计算机的世界中也是如此,多个线程乃至多个进程同时修改一个变量,必须要对这些线程或者进程进行排队。数据库的世界亦是如此,多个请求同时修改同一条数据记录,数据库必须需要一种机制去把多个请求来顺序化,或者理解为同一条数据原创 2020-11-11 22:09:34 · 2568 阅读 · 0 评论 -
你为什么还在用存储过程?
存储过程 存储过程(Stored Procedure)是在大型数据库系统中,一组为了完成特定功能的SQL 语句集,它存储在数据库中,一次编译后永久有效,用户通过指定存储过程的名字并给出参数(如果该存储过程带有参数)来执行它。存储过程是数据库中的一个重要对象。 优势 可以减少程序在调用DB时候的信息传输量(其实减少的只有Request的时候) 存储过程是预先优化和预编译的,节省每次运行编译的时间,所以一般情况下认为存储过程的性能是优于sql语句的。 对调用者可以隐藏数据库的复杂性,将数据组装的过程封装。原创 2020-11-11 22:02:53 · 1478 阅读 · 0 评论