首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    .Net Core 中的选项Options

    .NetCore 配置Configuration的同学可以看下我的上一篇文章 [.Net Core配置Configuration源码研究] 由代码开始 定义一个用户配置选项 public class UserOptions...IOptionsSnapshot生命周期为Scope IOptionsMonitor可监听到配置文件变动去动态更新配置项 问题 IOptions,IOptionsSnapshot,IOptionsMonitor 如何.../何时注入、初始化 Options指定名称时内部是如何设置的 Options如何绑定的IConfiguration IOptionsMonitor是如何同步配置文件变动的 配合源码解决疑惑 Configure...OptionsFactory 那么OptionsFactory又是如何创建Options的呢?...作为键存到字典中缓存实例 OptionsFactory会通过反射创建Options的实例,并调用ConfigureNamedOptions中的委托给实例赋值 现在只剩下最后一个问题了,OptionsMonitor是如何动态更新选项的呢

    86610

    Redis进阶-如何海量的 key 中找出特定的key列表 & Scan详解

    ---- 需求 假设你需要从 Redis 实例成千上万的 key 中找出特定前缀的 key 列表来手动处理数据,可能是修改它的值,也可能是删除 key。...那该如何海量的 key 中找出满足特定前缀的 key 列表来?...因为这个 limit 不是限定返回结果的数量,而是限定服务器单次遍历的字典槽位数量(约等于)。 如果将 limit 设置为 10,你会发现返回结果是空的,但是游标值不为零,意味着遍历还没结束。...它不是第一维数组的第 0 位一直遍历到末尾,而是采用了高位进位加法来遍历。之所以使用这样特殊的方式进行遍历,是考虑到字典的扩容和缩容时避免槽位的遍历重复和遗漏....高位进位法左边加,进位往右边移动,同普通加法正好相反。但是最终它们都会遍历所有的槽位并且没有重复。

    4.6K30

    原理上搞懂如何设置线程池参数大小?

    我们在使用线程池的时候,会有两个疑问点: 线程池的线程数量设置过多会导致线程竞争激烈 如果线程数量设置过少的话,还会导致系统无法充分利用计算机资源 那么如何设置才不会影响系统性能呢?...鉴于这两个线程池的核心原理是一样的,下面我们就重点看看 ThreadPoolExecutor 类是如何实现线程池的。...不过我不太推荐使用它们,因为选择使用 Executors 提供的工厂类,将会忽略很多线程池的参数设置,工厂类一旦选择设置默认参数,就很容易导致无法调优参数设置,从而产生性能问题或者资源浪费。...看完以上两种情况下的线程计算方法,你可能还想说,在平常的应用场景中,我们常常遇不到这两种极端情况,那么碰上一些常规的业务操作,比如,通过一个线程池实现向用户定时推送消息的业务,我们又该如何设置线程池的数量呢...综合来看,我们可以根据自己的业务场景,“N+1”和“2N”两个公式中选出一个适合的,计算出一个大概的线程数量,之后通过实际压测,逐渐往“增大线程数量”和“减小线程数量”这两个方向调整,然后观察整体的处理时间变化

    90940

    SQL Server的索引碎片

    在有特定搜索或者返回无序结果集的查询的情况下,偏离顺序的索引页不会引起问题。对于返回有序结果集的查询,搜索那些无序的索引页需要进行额外处理。...虽然在一个有频繁数据插入的应用程序里这也许有帮助,但是设置一个fill factor(填充因子)会在索引页上留下空间,服务器内部碎片会导致索引尺寸增加,从而在返回需要的数据时要执行额外的读操作,这些额外的读操作会降低查询的性能...该值应该和DBCC SHOWCONTIG返回的扫描扩展盘区数一致。如果DBCC SHOWCONTIG返回的数高,说明存在外部碎片。碎片的严重程度依赖于刚才显示的值比估计值高多少。...扫描密度[最佳值:实际值](Scan Density [Best Count:Actual Count]):DBCC SHOWCONTIG返回最有用的一个百分比。这是扩展盘区的最佳值和实际值的比率。...例如, dbcc dbreindex('database.dbo.test','',90) 倒腾碎片后,可能就是这样,确实数字上,更清晰了,但是无论是重建、重组,都会涉及到索引数据块的调整,因此他的执行时间应该是和数据量和碎片的多少直接相关的

    1.4K30

    SQLServer数据库收缩相关知识笔记

    2、数据库收缩的原理 官方解释:收缩数据文件通过将数据页文件末尾移动到更靠近文件开头的未占用的空间来恢复空间。...在文件末尾创建足够的可用空间后,可以取消对文件末尾的数据页的分配并将它们返回给文件系统。 3、数据库收缩的限制和局限 收缩后的数据库不能小于数据库最初创建时指定的大小。...或是上一次使用文件大小更改操作(如 DBCC SHRINKFILE)设置的显式大小。...4.2 收缩数据库文件 DBCC SHRINKFILE 介绍:收缩当前数据库的指定数据或日志文件的大小,或通过将数据指定的文件移动到相同文件组中的其他文件来清空文件,以允许数据库中删除该文件。...NOTRUNCATE:在指定或不指定 target_percent 的情况下,将已分配的页数据文件的末尾移动到该文件前面未分配页。文件末尾的可用空间不会返回给操作系统,文件的物理大小也不会更改。

    1.5K40

    SQL Server数据库碎片

    对某些特定的查询而言,这将带来极佳的性能。当物理排序和逻辑排序不匹配时,磁盘的工作性能会变得低效,这是因为磁头必须向前和向后移动来查找索引,而不是只象某个单一方向来搜索。...DBCC SHOWCONTIG是显示指定的表的数据和索引的碎片信息。当运行该命令时,要特别注意逻辑碎片(Logical Fragmentation)和页密度(Page Density)两个指标。 ...该值应该和DBCC SHOWCONTIG返回的扫描扩展盘区数一致。如果DBCC SHOWCONTIG返回的数高,说明存在外部碎片。碎片的严重程度依赖于刚才显示的值比估计值高多少。...Scan Density [Best Count:Actual Count]-扫描密度[最佳值:实际值]:DBCC SHOWCONTIG返回最有用的一个百分比。这是扩展盘区的最佳值和实际值的比率。...参考:Microsoft SQL Server 2000 索引碎片整理最佳实践 如何将索引碎片数量降至最低

    2.8K80

    SQL Server 深入解析索引存储(中)

    当堆有多个分区时,每个分区有一个堆结构,其中包含该特定分区的数据。例如,如果一个堆有四个分区,则有四个堆结构;每个分区有一个堆结构。...堆内的数据页和行没有任何特定的顺序,也不链接在一起。数据页之间唯一的逻辑连接是记录在 IAM 页内的信息。...使用 IAM 页设置扫描顺序还意味着堆中的行一般不按照插入的顺序返回。 ? 页面的组成 ?...数据部分(DATA):以16进制格式存储行记录(第96个字节开始) ? 4. 行偏移部分(OFFSET TABLE):以倒序的顺序记录了行记录的指针位置,这个使用2的显示方式比较明显看出 ?...分析IAM页 DBCC page(Ixdata,1,3283,3) ? 分析溢出页 DBCC page(Ixdata,1,3282,3) ? ?

    1.3K80

    SQL Server 执行计划缓存

    怎样缓存执行计划 SQL Server 有一个高效的算法,可查找用于任何特定 SQL 语句的现有执行计划。...怎样判断需要删除的执行计划 果存在内存不足的情况,数据库引擎将使用基于开销的方法来确定过程缓存中删除哪些执行计划。...怎样确定一个执行计划的开销呢,对于一个第一次执行的执行计划SQL Server将它的开销值设为0,被多次执行过的执行计划SQL Server将它的开销值设置为原始编译开销,所以数据库引擎会重复检查每个执行计划的状态并将删除当前开销为零的执行计划...对执行计划所使用的统计信息进行更新,这些更新可能是语句(如 UPDATE STATISTICS)中显式生成,也可能是自动生成的。 删除执行计划所使用的索引。 显式调用 sp_recompile。...);GO---清空缓存中的数据DBCC DROPCLEANBUFFERS;---清空特定缓存存储区中的执行计划DBCC FREESYSTEMCACHE() -- 'ALL', pool_name

    1.9K90
    领券