数据库系统

SQLite剖析之动态内存分配

匿名 (未验证) 提交于 2019-12-03 00:19:01
SQLite剖析之动态内存分配 SQLite通过动态内存分配来获取各种对象(例如数据库连接和SQL预处理语句)所需内存、建立数据库文件的内存Cache、保存查询结果。 1、特性 SQLite内核和它的内存分配子系统提供以下特性: (1)对内存分配失败的健壮处理。如果一个内存分配请求失败(即malloc()或realloc()返回NULL),SQLite将释放未关联的缓存页,然后重新进行分配请求。如果失败,SQLite返回SQLITE_NOMEM给应用程序。 (2)无内存泄漏。应用程序负责销毁已分配的任何对象。例如应用程序必须使用sqlite3_finalize()结束每个预处理SQL语句,使用sqlite3_close关闭每个数据库连接。只要应用程序配合,即使在内存分配失败或系统出错的情况下SQLite也绝不会泄漏内存。 (3)内存使用限制。sqlite3_soft_heap_limit64()机制可以让应用程序设置SQLite的内存使用限制。SQLite会从缓存中重用内存,而不是分配新的内存,以满足设置的限制。 (4)零分配选项。应用程序可以在启动时给SQLite提供几个大块内存的缓冲区,SQLite将用这些缓冲区作为它所有内存分配的需要,不再调用系统的malloc()和free()。 (5)应用程序提供内存分配器。应用程序在启动时可以给SQLite提供可选的内存分配器

事务面试题

匿名 (未验证) 提交于 2019-12-03 00:16:01
事务的特性ACID 事务提供了一种机制,可用来将一系列数据库更改归入一个逻辑操作。更改数据库后,所做的更改可以作为一个单元进行提交或取消。事务可确保遵循原子性、一致性、隔离性和持续性(ACID)这几种属性,以使数据能够正确地提交到数据库中。 1.脏读 一个事务正在对数据进行更新操作,但是更新还未提交,另一个事务这时也来操作这组数据,并且读取了前一个事务还未提交的数据,而前一个事务如果操作失败进行了回滚,后一个事务读取的就是错误的数据,这样就造成了脏读 2.不可重复读 3.幻读 第一个数据正在查询某一条数据,这时,另一个事务又插入了一条符合条件的数据,第一个事务在第二次查询符合同一条件的数据时,发现多了一条前一次查询时没有的数据,仿佛幻觉一样,这就是幻读 不可重复读是指在同一查询事务中多次进行,由于其他提交事务所做的修改和删除,每次返回不同的结果集,此时发生不可重复读 幻读是指在同一查询事务中多次进行,由于其他提交的事务所做的插入操作,每次返回不同的结果集,此时发生幻读表面上看,区别就在于不可重复读能看见其他事务提交的修改和删除,而幻读能看见其他事务提交的插入 1.default:(默认) 默认隔离级别,使用数据库默认的事务隔离级别 2.read_uncommitted:(读未提交) 这是事务最低的隔离级别,他允许另外一个事务可以看到这个事务未提交的数据,这种隔离级别会产生脏读

易飞ERP API接口调用DEMO

匿名 (未验证) 提交于 2019-12-03 00:15:02
一、使用场景: 1、需要开放ERP数据给第三方系统对接,如APP手机端开发,MES,OA等; 2、接口按现在主流开发,restful风格,传JSON数据,跨平台,不限开发工具; 3、不限易飞ERP,支持大部分主流数据库,包括Microsoft SQL Server、Oracle、MySQL、MariaDB、PostgreSQL、DB2、SQL Anywhere、Firebird、SQLite等 二、优点 : 1、只要会SQL就可以开放需要的数据,不需要编程基础。如图: 三、测试DEMO: 下载地址: 点击 。 来源:博客园 作者: redhat588 链接:https://www.cnblogs.com/redhat588/p/11769392.html

为什么要使用连接池?

匿名 (未验证) 提交于 2019-12-03 00:15:02
传统的数据库连接方式 一个连接对象对应一个物理连接,每次操作都打开一个物理连接,使用完都关闭连接,造成系统性能低下。 连接池技术 客户程序得到的连接对象是连接池中物理连接的一个句柄,调用连接对象的close()方法,物理连接并没有关闭,数据源的实现只是删除了客户程序中的连接对象和池中的连接对象之间的联系. 数据库连接的建立及关闭是耗费系统资源的操作,在大型应用中对系统的性能影响尤为明显。为了能重复利用数据库连接对象,缩短请求的响应时间和提高服务器的性能,支持更多的客户,应采用连接池技术. 来源:博客园 作者: 燕十三丶 链接:https://www.cnblogs.com/Yanss/p/11739073.html

数据库系统概念总结:第十一章 索引与散列

匿名 (未验证) 提交于 2019-12-03 00:05:01
周末无事水文章,期末备考的总结资料 第十一章 索引与散列 11.1 基本概念 基本的索引类型 评价顺序索引和散列的因素 11.2 顺序索引 聚簇索引(clustering index):包含记录的文件按照某个搜索码指定的顺序排序;它也被称为主索引(primary index);可以被建立到任何搜索码上 ・非聚簇索引(nonclustering index):搜索码指定的顺序与文件中记录的物理顺序不同的索引;它也被称为辅助索引(secondary index) 11.2.1 稠密索引和稀疏索引 索引项(index entry)或索引记录(index record)由一个搜索码值和指向具有该搜索码值的一条或者多条记录的指针构成。指向记录的指针包括磁盘块的标识和标识磁盘块内记录的偏移量 顺序索引的分类 11.2.2 多级索引 优点 11.2.3 索引的更新 11.2.4 辅助索引 辅助索引必须是稠密索引,对每个搜索码值都有一个索引项,而且对文件中的每个记录都有一个指针 11.3 B+树索引文件(本节看书效率更高) B+树索引是一种多级索引 11.6 静态散列 可扩展散列表 线性散列表 来源:51CTO 作者: PastoralDog 链接:https://blog.csdn.net/qq_39739850/article/details/100847679

数据库优化 | 亿级数据量系统数据库性能优化方案

匿名 (未验证) 提交于 2019-12-02 23:57:01
一、数据库性能瓶颈主要原因 1、数据库连接 MySQL数据库默认连接为100,我们可以通过配置initialSize、minIdle、maxActive等进行调优,但由于硬件资源的限制,数据库连接不可能无限制的增加,对大型单体应用单实例数据库可能会出现最大连接数不能满足实际需求的情况,这时就会系统业务阻塞。 2、表数据量大(空间存储问题) 普遍观点认为单表数据量超过1000万条时就是出现数据库读取性能瓶颈。从索引角度分析,如果索引未被命中,数据库系统就会全表扫描,数据量越大,扫描全表的时间就会越长;即使索引被命中了,由于B+TREE索引是存放在硬盘上的,数据量越大B+TREE层次越深,IO次数也就越多。 3、硬件资源限制 硬件资源直接影响QPS每秒查询数/TPS每秒事务数。 二、数据性能优化方案 常见的数据性能优化方案:SQL优化、缓存、创建索引、读写分离、分库分表等。 解决大数据量性能优化,真正有效方案是采用分布式数据存储,即上面所述读写分离和分库分表。 1、读写分离 读写分离基于主从复制,采用区别读、写多数据源方式进行数据的存储和加载。数据的存储(增删改)指定写数据源,数据的读取查询指定读数据源。 通过读写分离复制与master相同的数据源(一主多从),多数据源可以部署到不同主机上,从而可以解决数据里连接瓶颈和硬件资源限制问题。 2、分库分表 对数据的库表进行拆分

并行数据库体系

匿名 (未验证) 提交于 2019-12-02 23:34:01
并行数据库要求尽可能的并行执行所有的数据库操作,从而在整体上提高数据库系统的性能。 根据所在的计算机的处理器(Processor)、内存(Memory)及存储设备(Storage)的相互关系,并行数据库可以归纳为三种基本的体系结构(这也是并行计算的三种基本体系结构),即: 1. 共享内存结构(Shared-Memory)、 2. 共享磁盘结构(Shared-Disk) 3.无共享资源结构(Shared-Nothing)。 1、共享内存(Shared-Memory)结构 =多个处理 + 一个全局共享的内存(主存储器)和多个磁盘存储,各个处理器通过高速通讯网络(InterconnectionNetwork)与共享内存连接,并均可直接访问系统中的一个、多个或全部的磁盘存储,在系统中,所有的内存和磁盘存储均由多个处理器共享。 (1)提供多个数据库服务的处理器通过全局共享内存来交换消息和数据,通讯效率很高,查询内部和查询间的并行性的实现也均不需要额外的开销; (2)数据库中的数据存储在多个磁盘存储上,并可以为所有处理器访问; (3)在数据库软件的编制方面与单处理机的情形区别也不大。 这种结构由于使用了共享的内存,所以可以基于系统的实际负荷来动态地给系统中的各个处理器分配任务,从而可以很好地实现负荷均衡。 2、共享磁盘(Shared-Disk)结构 该结构由多个具有独立内存(主存储器

分布式系统一致性保障方案总结

匿名 (未验证) 提交于 2019-12-02 22:56:40
群里经常卧虎藏龙,转载一篇百度大牛,投稿原创文章,大家交流学习 ,欢迎更多朋友投稿,发布原创文章和干货和大家分享交流。 引言 在互联网系统中,理想的情况下,肯定是希望系统能够同时满足“一致性”、“可用性”和“分区容忍性”。 但是基于熟悉的CAP定律也好,还是BASE理论, 我们知道,在实际情况中是不可能实现的。而在金融领域,一致性是最为关注的特性,任何情况下都必须满足一致性。关于CAP定律和BASE理论,本文不再介绍,有兴趣的同学可以自行百度一下。本文重点来阐述下关于一致性的方案,包括强一致性和最终一致性。 而在互联网领域, 很多情况下都是牺牲强一致性,来达到高可用性, ϵ 统往往只需要保证“最终一致性”,只要这个最终时间是在用户可以接受的范围内即可。 数据库本地事务 数据库事务肯定是强一致性的方案,而且是一致性最简单的方案,因为一致性是数据库的事务来保证的,业务层不需要关心细节。比较典型的应用是在返现场景下,针对带有返现的交易的退款,需要一次性退两笔交易单,采用的就是通过数据库本地事务来完成的。具体如下: 用户A花了100元购买商户B的商品,购买结束后返现给用户A 2元。 这是两笔交易,原始交易是100元,返现交易是2元。 那么发生退款时,需要保证两笔交易同时都退款。这个就是直接采用数据库本地事务实现的,即一次退款请求,两笔交易同时退款。 总结: 数据库事务的优点是简单

php 开源项目汇总

匿名 (未验证) 提交于 2019-12-02 22:11:45
WordPress是最热门的开源个人信息发布系统(Blog)之一,基于PHP+MySQL构建。WordPress提供的功能包括: 1.文章发布、分类、归档。 2.提供文章、评论、分类等多种形式的RSS聚合。 3.提供链接的添加、归类功能。 4.支持评论的管理,垃圾信息过滤功能。 5.支持对样式CSS和PHP程序的直接编辑、修改。 6.在Blog系统外,方便的添加所需页面。 7.通过对各种参数进行设置,使你的Blog更具个性化。 8.静态html页面生成。 9.通过选择不同主题,方便地改变页面的显示效果。 10.通过添加插件,可提供多种特殊的功能。 11.支持Trackback和pingback。 12.支持针对某些其它blog软件、平台的导入功能。 13.支持多用户。 14.安装最简单。 15.Web标准支持非常好。 16.使用比较简单。 17.拥有大量的主题与插件。 Mambo 【PHP开源 内容管理CMS】 Mambo是一个功能丰富、采用PHP+MySQL搭建、最优秀的动态门户引擎/内容管理系统(CMS),能够用于建设拥用几个页面到几千个页面的网站。它具有: 1、强大的内容编排功能 只需要熟悉简单的在线编辑方式就可以维护自己的网站内容 2、丰富、精美的模板/主题可供选择 3、优秀的性能 采用独有的网站 缓存 技术,让动态网站拥有静态网站的速度 4、针对搜索引擎收录而优化的功能。

asp.net MVC通用权限管理系统-响应式布局-源码

匿名 (未验证) 提交于 2019-12-02 22:10:10
一、Angel工作室简单通用权限系统简介 二、框架特色 为了数据方便读写,语言的成熟性,选择asp.net开发效率更高效率更快; 系统架构采用:耦合性低、重用性高、部署快、可维护性高等优点的MVC框架进行搭建; 系统配置文件数据采用HttpRuntime.Cache进行缓存,使得程序在运行中效率更高、速度更快; 数据库的选型,根据系统的数据规模与需求方的相关要求,综合多方考量,调研多种数据库后选定mysql为系统数据库; 运行环境根据功能模块的特点,选型window server2008+IIS,部署更简洁; 使用报表导出开源组件NPOI可以在没有安装Office的情况下对Word或Excel文档进行读写操作; 为了兼容更多的浏览器,让用户界面使用更友好。我们选择了响应式布局框架bootstrap; 系统报表我们采用了echarts开源软件,并且我们提供了非常炫酷的图形界面,特色是地图,另外还提供了柱状图、折线图、饼图、气泡图及四象限图等; 三、界面展示 登录界面: 主页面: 菜单管理界面: 文件上传: 部门管理: 角色管理: 编辑器集成: 来源:博客园 作者: Angelasp 链接:https://www.cnblogs.com/angelasp/archive/2019/11/06/11807016.html