当前位置: 首页 > news >正文

网站如何做的有特色在linux上做网站搭建

网站如何做的有特色,在linux上做网站搭建,做婚恋网站代理商挣钱吗,高端建站是什么深入浅出#xff1a;MongoDB中的背景创建索引 想象一下#xff0c;你正忙于将成千上万的数据塞入你的MongoDB数据库中#xff0c;你的用户期待着实时的响应速度。此时#xff0c;你突然想到#xff1a;“嘿#xff0c;我应该给这些查询加个索引#xff01;” 没错…深入浅出MongoDB中的背景创建索引 想象一下你正忙于将成千上万的数据塞入你的MongoDB数据库中你的用户期待着实时的响应速度。此时你突然想到“嘿我应该给这些查询加个索引” 没错有了索引查询速度将大大提升。但问题是创建索引需要时间而这段时间里你的数据库性能可能会有所下降。该怎么办呢别急让我向你介绍一种神奇的操作——背景创建索引。 问题背景 在我们深入探讨背景创建索引之前先来快速回顾一下索引的作用。索引就像是一本书的目录可以让你快速找到相关内容。如果没有索引MongoDB需要扫描整个集合来找到相关文档这显然很慢。因此索引的存在就显得尤为重要。 一般而言创建索引的过程可能会消耗大量资源特别在数据量较大的情况下在创建索引时数据库的其他操作性能会受到影响。 背景创建索引的意义 背景创建索引Background Indexing则提供了一个优雅的解决方案。它的最大作用是**在创建索引的同时不会阻塞你的读写操作。**简单来说就是你可以边喝咖啡边趟业务看着索引在“后台”慢慢地构建不影响你正常的工作流。 与一般索引创建方式的区别 一般的索引创建方式是前台操作Foreground Indexing它会锁住你的集合直到索引创建完成。在这个期间所有对该集合的操作都被阻塞。这会带来明显的问题特别是如果你的系统正被大量请求轰炸。 示例与代码实现 我们来通过代码示例更直观地了解二者之间的区别。 前台创建索引 from pymongo import MongoClient, ASCENDING# 连接MongoDB client MongoClient(mongodb://localhost:27017/) db client[mydatabase] collection db[mycollection]# 前台创建索引 collection.create_index([(myfield, ASCENDING)]) logger.info(前台索引创建完成)在上面的代码中调用 create_index 创建索引但在这整个创建过程中mycollection 集合会被锁住。如果你有大量的读写操作这段时间会相当难熬。 背景创建索引 from pymongo import MongoClient, IndexModel, ASCENDING# 连接MongoDB client MongoClient(mongodb://localhost:27017/) db client[mydatabase] collection db[mycollection]# 背景创建索引 index IndexModel([(myfield, ASCENDING)], namemyfield_index, backgroundTrue) collection.create_indexes([index]) logger.info(背景索引创建开始——你可以继续你的操作)在这个例子中我们使用 IndexModel 来指定背景创建索引。你会发现索引创建的同时mycollection 集合仍然处于可读写状态对用户几乎没有影响。 预先创建索引效率对比-实例测试 前面是写入正在进行时创建索引的情况现在是写入前先创建索引的对比测试 from pymongo import MongoClient, ASCENDING import timedef measure_insert_time_with_foreground_index(collection):# 清空集合collection.drop()# 创建普通索引start_index_time time.time()collection.create_index([(myfield, ASCENDING)])end_index_time time.time()print(f普通索引创建时间: {end_index_time - start_index_time} 秒)# 记录插入时间start_insert_time time.time()for i in range(10000):collection.insert_one({myfield: i, otherfield: fvalue_{i}})end_insert_time time.time()print(f普通索引插入时间: {end_insert_time - start_insert_time} 秒)def measure_insert_time_with_background_index(collection):# 清空集合collection.drop()# 创建背景索引start_index_time time.time()collection.create_index([(myfield, ASCENDING)], backgroundTrue)end_index_time time.time()print(f背景索引创建时间: {end_index_time - start_index_time} 秒)# 记录插入时间start_insert_time time.time()for i in range(10000):collection.insert_one({myfield: i, otherfield: fvalue_{i}})end_insert_time time.time()print(f背景索引插入时间: {end_insert_time - start_insert_time} 秒)# 进行测试 print(普通索引测试:) measure_insert_time_with_foreground_index(mongo_client[test][ForegroundIndex])print(\n背景索引测试:) measure_insert_time_with_background_index(mongo_client[test][BackgroundIndex])普通索引测试: 普通索引创建时间: 0.3452725410461426 秒 普通索引插入时间: 43.225260972976685 秒 背景索引测试: 背景索引创建时间: 0.30878233909606934 秒 背景索引插入时间: 37.60098671913147 秒 小结 总的来说背景创建索引提供了在高并发条件下优化数据库性能的最佳实践。尽管它可能需要更多的时间来完成索引创建但这个时间带来的性能自由完全是值得的。 本文通过详细解释和简单示例希望帮助你更好地理解MongoDB中的背景创建索引。记得选择背景创建索引就像选择一条优雅的小径不仅能到达目的地还能在旅途中享受一路的风景 无论你是新手还是老手希望这篇博客都能为你的数据库之旅带来一丝幽默与轻松。继续探索吧技术之路永无止境
http://www.hkea.cn/news/14559210/

相关文章:

  • c# asp.net网站开发书网络营销主要做些什么
  • 网站建设甲方给乙方的需求方案电子商务网站建设与管理实训报告
  • 在线课程软件网站建设费用网站制作公司兴田德润怎么联系
  • 在线网站软件免费下载安装重庆玻璃制作厂家
  • 公司做网站留言板商城服务是什么平台
  • wui网站建设开源免费cms可商业用
  • 网站建设帮助中心哈尔滨建立网站公司
  • 图书馆 网站开发 总结c 做的网站怎么上传图片
  • 网站续费贵是重新做个好还是续费mvc做门户网站
  • 烟台网站建设烟台用thinksns做的网站
  • 怎么给网站动态做伪静态wordpress xrea
  • 美塔基500元做网站可信吗怎么生成网站源代码
  • 做网站工商局要不要备案呢百度收录什么网站吗
  • wordpress建立移动站建网站 是否 数据库
  • 上海做网站去哪里基于h5的移动网站开发
  • 网站制作报价图片欣赏高端大气的网络公司名称
  • 山东seo网络推广苏宁网站优化与推广
  • 直接找高校研究生做网站行吗南昌建站模板
  • 单县网站开发江苏建设主管部门网站
  • 网站上线要多久做视频添加字幕的网站
  • 建设电瓶车官方网站it网站建设方案
  • 高校网站群建设方案wordpress编辑页面打开慢
  • 建站之家官网网站开发的推荐
  • 怎么用flash做游戏下载网站网站吸流量
  • 网站建设好怎么发布网站关键词优化排名软件
  • 好的案例展示网站wordpress 美化插件
  • 怎么将公司网站设成首页济南市住房与城乡建设厅网站
  • 英文网站建设 淮安无锡知名网站
  • 延吉制作网站怎么给自己做网站
  • 内销网站要怎么做专业网站设计制作优化排名