首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

-错误处理

你可以在主 index.php 文件顶部找到环境配置部分来更改此设置。 重要 如果发生错误,禁用错误报告将不会阻止日志写入。...异常被抛出,系统将显示后面的错误模板 /application/views/errors/html/error_404.php。你应为你站点自定义所有错误视图。...如果在 Config/Routes.php ,你指定了404 重写规则,那么它将代替标准 404 来被调用 if (!...ConfigException 配置文件无效或 class 类不是正确类型等情况,请使用此异常 throw new \CodeIgniter\ConfigException(); 它将 HTTP...DatabaseException 产生如连接不能建立或连接临时丢失数据库错误时,请使用此异常 throw new \CodeIgniter\DatabaseException(); 它将 HTTP

2.2K10

讲解-加载静态

讲解 本教程旨在向您介绍CodeIgniter框架和MVC体系结构基本原理。它将向您展示如何以逐步方式构造基本CodeIgniter应用程序。 在本教程,您将创建一个基本新闻应用程序。...您将从编写可加载静态页面的代码开始。接下来,您将创建一个新闻部分,该部分将从数据库读取新闻项。最后,您将添加一个表单以在数据库创建新闻项。...$page, $data); echo view('Templates/Footer', $data); } 请求页面存在,将给用户加载并展示出一个包含头页脚页面。...所以控制器 $data['title'] ,就等于视图中 $title 。 路由 控制器已经开始工作了!...获取到请求CodeIgniter 首先查找能匹配到第一条规则,然后调用相应可能存在参数控制器和方法。 你可以在关于 URL路由文档 中找到更多信息。

3.5K10
您找到你想要的搜索结果了吗?
是的
没有找到

CI框架网页缓存简单用法分析

尽管 CodeIgniter 已经相当高效了,但是网页动态内容、主机内存 CPU 和数据库读取速度等因素直接影响了网页加载速度。...依靠网页缓存, 你网页可以达到近乎静态网页加载速度,因为程序输出结果 已经保存下来了。 缓存是如何工作? 可以针对到每个独立页面进行缓存,并且你可以设置每个页面缓存更新时间。...页面第一次加载,缓存将被写入到 application/cache 目录下文件中去。 之后请求这个页面,就可以直接从缓存文件读取内容并输出到用户浏览器。...开启缓存 将下面的代码放到任何一个控制器方法内,你就可以开启缓存了: $this- output- cache($n); //其中 $n 是缓存更新时间(单位分钟) 上面的代码可以放在方法任何位置...》、《Zend FrameWork框架入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》 希望本文所述对大家基于CodeIgniter

1.4K41

面试官:能说一说Mysql缓存池吗?

「写操作」: 对于数据库修改操作,首先修改在缓存池中,然后在以一定频率刷新到磁盘,并不是每次页发生改变就刷新回磁盘,而是通过 checkpoint 机制把刷新回磁盘。...2、Lru 链表 Lru 链表用来管理已经读取数据库刚启动,Lru 链表是空,此时也都放在 Free 列表需要读取数据,会从 Free 链表申请一个,把从放入到磁盘读取数据放入到申请...因此需要考虑把已经缓存从 Buffer pool 删除一部分,进而需要考虑如何删除及删除哪些已经缓存。...问题:这些被修改页面什么时候刷新到磁盘?以什么样顺序刷新到磁盘? 最简单做法就是每发生一次修改就立即同步到磁盘上对应上,但是频繁往磁盘写数据会严重影响程序性能。...并且在 Flush 链表是根据 oldest_lsn(这个表示这个第一次被更改 lsn 号,对应 oldest_modification,每个头部记录)进行排序刷新到磁盘越小表示要最先被刷新

89320

从Oracle到PostgreSQL:一文掌握Checkpoint重要概念

完成 4) WAL日志量达到了触发checkpoint阈值 5) 周期性地进行checkpoint 6) 需要刷新所有脏 checkpoint调优 ---- 如何设置调优checkpoint,设置正确参数呢...数据库后台进程在执行用户事务发生数据更改是先写入缓冲池中,对应PostgreSQL就是shared buffers。...PostgreSQL缓冲池一般设置为总内存1/4左右,缓冲池里面的这些数据更改,在事务提交,是无需同步写入到磁盘。...首先是由background writer将shared buffers里面的更改页面(即脏),通过调用write写入操作系统page cache。...参考:0.8≈0.9 checkpoint_flush_after 单位:BLCKSZ checkpointer process脏数据超过配置阈值,触发调用OS sync_file_range

62420

从Oracle到PostgreSQL:一文掌握Checkpoint重要概念

墨墨导读:Checkpoint是数据库重要概念,无论在Oracle,MySQL这个概念,它主要功能是在检查点时刻,脏数据全部刷新到磁盘,以实现数据一致性和完整性。...完成 4) WAL日志量达到了触发checkpoint阈值 5) 周期性地进行checkpoint 6) 需要刷新所有脏 checkpoint调优 ---- 如何设置调优checkpoint,设置正确参数呢...数据库后台进程在执行用户事务发生数据更改是先写入缓冲池中,对应PostgreSQL就是shared buffers。...PostgreSQL缓冲池一般设置为总内存1/4左右,缓冲池里面的这些数据更改,在事务提交,是无需同步写入到磁盘。...首先是由background writer将shared buffers里面的更改页面(即脏),通过调用write写入操作系统page cache。

91620

MySQL InnoDB Update和Crash Recovery流程

2、然后介绍了MySQL Update过程中发生了什么?Redo,Undo,双写之间如何配合,脏何时刷新? 3、最后介绍了Crash Recovery如何做恢复?...Redo"意思是在必要(如:崩溃恢复)可以使用Redo Log数据来重新应用到InnoDB数据文件,使得InnoDB能够恢复到一个一致性状态 Redo Log 是一个预写日志(WAL),是一种用于在数据库数据库所在主机发生崩溃确保数据完整性技术...一个页面的修改操作完成,Redo Log Buffer将执行flush到Redo Log文件操作(但此时可能并未sync到磁盘) 根据WAL日志先行原则,buffer pool刷新到数据文件之前...一个时间点,由一个LSN(Checkpoint LSN)表示整型,在Checkpoint LSN之前每个数据(buffer pool)更改都已经落盘(刷新到数据文件),Checkpoint...:持续每次只刷新一部分到磁盘,数据库正常运行过程中都是使用这种方式刷脏,在InnoDB内部还可细分为如下几种: ** Master线程每秒/每十秒固定执行Checkpoint ** LRU list

2.9K70

MySQL redo与undo日志解析

那么 MySQL 是如何保证一致性呢?最简单做法是在每次事务提交时候,将该事务涉及修改数据全部刷新到磁盘。...但是这么做会有严重性能问题,主要体现在两个方面: 因为 Innodb 是以为单位进行磁盘交互,而一个事务很可能只修改一个数据面的几个字节,这个时候将完整数据刷到磁盘的话,太浪费资源了。...为1,每次 commit 都会把 redo log 从 redo log buffer 写入到 system ,并 fsync 刷新到磁盘文件。...为0,表示事务提交不进行写入 redo log 操作,这个操作仅在 master thread 完成,而在 master thread 每1秒进行一次重做日志 fsync 操作,因此实例 crash...更改 redo log 及其 buffer 大小是需要重启数据库实例,建议初始化时做好评估。可以适当加大 redo log 组数和大小,特别是你数据库实例更新比较频繁情况下。

60620

-网页缓存

网页缓存 CodeIgniter 可以让你通过缓存页面来达到更好性能。...尽管 CodeIgniter 已经相当高效了,但是网页动态内容、主机内存 CPU 和数据库读取速度等因素直接影响了网页加载速度。...依靠网页缓存, 你网页可以达到近乎静态网页加载速度,因为程序输出结果 已经保存下来了。 缓存是如何工作? 可以针对到每个独立页面进行缓存,并且你可以设置每个页面缓存更新时间。...页面第一次加载,文件将会被当前缓存引擎所配置方式缓存起来(译者注:例如文件缓存,memcache缓存等)。 之后请求这个页面,就可以直接从缓存文件读取内容并输出到用户浏览器。...如果缓存过期,会在输出之前被删除并重新刷新。 注解 基准标记没有缓存,所以缓存启用时,仍然可以查看页面加载速度。

79440

MONGODB 性能与调优 -- 内存调优 2 (怎么计算驱逐率与调整参数)

接上次文,MONGODB 在操作数据块达到一定程度情况下,就需要将这些数据转移到磁盘,我们可以称之为驱逐。...,对wiredTiger引擎配置进行更改,其中将驱逐线程进行固化 4个, 并且触发脏刷新触发机制提前,这就类似于提高数据库checkpoint 频率。...其实徒劳原因和下一个我们说操作 CHECKPOINT 有关, 大量数据写入到内存,必须要找时间释放到磁盘上,将脏刷新到磁盘,默认刷新时间为60秒, 那么一个不好checkpoint 会产生什么影响...这里会牵扯几个问题,1 多少信息保留在cache 2 什么情况下会触发将内存数据刷到我们磁盘上,减少这些参数情况下,可以提高刷新频度。...来查看当前系统状态是如何

1.1K50

InnoDB克隆和页面跟踪

系统级LSN System LSN –表示分配给页面更改最后一个原子集LSN,它是在任何给定时间点数据库系统最大LSN。...页面级LSN Page LSN–内存副本可能有多个更改,但这些更改不一定都要展现在磁盘上。存储在头中这个LSN表示页面更改到哪个LSN为止驻留在磁盘上。...WAL和检查点过程使InnoDB能够从崩溃恢复。在发生崩溃情况下,InnoDB甚至在数据库启动之前就开始崩溃恢复过程,并在检查点LSN之后读取重做日志以获取更改。...跟踪 如何实际跟踪修改页面呢?页面刷新到磁盘,跟踪是在IO层完成第一次启动页面跟踪,启动请求系统LSN被标记为跟踪LSN。跟踪页面LSN小于跟踪LSN所有刷新页面。...因为它们需要保留且不能丢失,这确保在检查点LSN刷新到磁盘之前,页面更改及其对应页面条目在页面跟踪系统是安全,因此不会发生崩溃。

99510

MySQL Innodb和Myisam

二级索引列被更新,旧二级索引记录被删除标记,新记录被插入,并最终被删除标记记录被清除。 二级索引记录被删除标记或二级索引被更新事务更新,InnoDB在聚集索引查找数据库记录。...可以控制何时发生后台刷新以及是否根据工作负载动态调整刷新速率。 可以配置如何InnoDB保留当前缓冲池状态以避免服务器重新启动后长时间预热。...2、更改缓冲区 更改缓冲区是一种特殊数据结构,二级索引不在缓冲池中,它会缓存对二级索引 更改 。...在系统大部分空闲时或在缓慢关闭期间运行清除操作会定期将更新索引写入磁盘。与将每个立即写入磁盘相比,清除操作可以更有效地为一系列索引写入磁盘块。 在内存更改缓冲区占据了缓冲池一部分。...在磁盘上,更改缓冲区是系统表空间一部分数据库服务器关闭,索引更改会在其中缓冲。 更改缓冲区缓存数据类型由 innodb_change_buffering 变量控制。

1.7K20

MySQL InnoDB 存储引擎原理浅析

3、checkpoint 每次执行update、delete等语句更改记录,缓冲池中与磁盘不一致,但是缓冲池不能频繁刷新到磁盘(频率过大性能低),因此增加了write ahead log...写入发生系统崩溃,恢复过程,innodb从共享表空间doublewrite找到该页副本,并将其恢复到表空间文件,再apply重做日志。...4.5 刷新临近 InnoDB提供刷新临近功能:刷新一脏,同时检测所在区(extent)所有,如果有脏则一并刷新,好处则是通过AIO特性合并写IO请求,缺点则是有些不怎么脏也好被刷新,...而且频繁更改那些不怎么脏又很快变成脏,造成频繁刷新。...5、InnoDB启动、关闭与恢复 5.1 innodb_fast_shutdown 该影响数据库正常关闭行为,取值可以为0/1/2(默认为1): 【为0】:关闭过程需要完成所有的full purge

33530

MySQL redo与undo日志解析

那么 MySQL 是如何保证一致性呢?最简单做法是在每次事务提交时候,将该事务涉及修改数据全部刷新到磁盘。...但是这么做会有严重性能问题,主要体现在两个方面: 因为 Innodb 是以为单位进行磁盘交互,而一个事务很可能只修改一个数据面的几个字节,这个时候将完整数据刷到磁盘的话,太浪费资源了。...为1,每次 commit 都会把 redo log 从 redo log buffer 写入到 system ,并 fsync 刷新到磁盘文件。...为0,表示事务提交不进行写入 redo log 操作,这个操作仅在 master thread 完成,而在 master thread 每1秒进行一次重做日志 fsync 操作,因此实例 crash...更改 redo log 及其 buffer 大小是需要重启数据库实例,建议初始化时做好评估。可以适当加大 redo log 组数和大小,特别是你数据库实例更新比较频繁情况下。

62620

redo log(1)—mysql进阶(五十九)

但是说道事务持久性,对于已提交事务,但是在事务提交后发生了系统崩溃,这个数据更改对于数据库也不能丢失。...但如果我们只在内存buffer pool修改了页面,假设事务提交后出现故障,导致内存里数据都失效了,那么这个已提交事务对数据库中所更改也跟着丢失,但我们不能忍受。...那么如何保证持久性呢,一个很简单做法就是在事务提交完成之前,吧所有修改页面刷新到磁盘上,但这样简单粗暴做法有点问题: 刷新完整数据太浪费:有时候我们在仅仅修改了一个字节,我们又知道innoDB是以为单位来进行磁盘...系统启动,会将max row id属性加载到内存,将该加上256之后赋值给我们前边提到全局变量(因为在上次关机时该全局变量可能大于max row id属性)。...(额外数据包含变长字段长度列表,null列表,头部信息,后面就是真实数据,compact行如果发生数据存储溢出,真实数据列表会存储一部分真实数据,之后存储就是指向页号,dynamic则在真实数据列表存储全部都是指向页号

30910

MySQL InnoDB 存储引擎原理浅析

3、checkpoint 每次执行update、delete等语句更改记录,缓冲池中与磁盘不一致,但是缓冲池不能频繁刷新到磁盘(频率过大性能低),因此增加了write ahead log...写入发生系统崩溃,恢复过程,innodb从共享表空间doublewrite找到该页副本,并将其恢复到表空间文件,再apply重做日志。...4.5 刷新临近 InnoDB提供刷新临近功能:刷新一脏,同时检测所在区(extent)所有,如果有脏则一并刷新,好处则是通过AIO特性合并写IO请求,缺点则是有些不怎么脏也好被刷新,...而且频繁更改那些不怎么脏又很快变成脏,造成频繁刷新。...5、InnoDB启动、关闭与恢复 5.1 innodb_fast_shutdown 该影响数据库正常关闭行为,取值可以为0/1/2(默认为1): 【为0】:关闭过程需要完成所有的full purge

1.3K20

携程二面:讲讲 MySQL WAL 策略和 CheckPoint 技术

倘若每次一个发生变化,就将新页版本刷新到磁盘,那么这个开销是非常大。并且,如果热点数据都集中在某几个,那么数据库性能将变得非常差。...另外,如果在从缓冲池将新版本刷新到磁盘发生了宕机,那么这个数据就不能恢复了。...2 ,而 file 2 也被写满,会再切换到 file 0 。...针对上面这三点我们依次来解释下: 1)缩短数据库恢复时间:数据库发生宕机时,数据库不需要重做所有的日志,因为 Checkpoint 之前都已经刷新回磁盘。...但事实上,其实 redo log 数据并不是时时刻刻都是有用,那些已经不再需要部分就称为 ”可以被重用部分“,即数据库发生宕机时,数据库恢复操作不需要这部分 redo log,因此这部分就可以被覆盖重用

1.5K20

谨慎设置innodb_io_capacity_max

像大多数数据库存储引擎一样,您在 InnoDB 更新一条数据,更新是在内存中进行,并且在命令实际返回之前,只会将修改简短描述写入redo log文件。...缓冲池中涉及到变更操作页面(或多个页面)被标记为脏。随着您写入更多数据,脏数量会增加,并且在某些时候需要将它们写入磁盘。此过程发生在后台,称为刷新。...在繁忙服务器上,自适应刷新算法处于活动状态,innodb_io_capacity_max 变量更为重要。一篇专门介绍 InnoDB 自适应刷新算法内部博文正在准备。...off 我们每次测试都改变 innodb_io_capacity_max并计算 30 分钟内刷新面的比率。...通常,SSD 在每个扇区执行写入操作比常规旋转驱动器要少得多。这一切都归结为使用与非门存储位方式。这些位由一组栅极上电压电平表示,并且栅极在之间循环,栅极最轻微劣化会影响这些电压电平。

1.6K21

mysql事务-redoundo log

,假设在事务提交后突然发生了某个故障,导致内存数据都失效了,那么这个已经提交了事务对数据库中所做更改也就跟着丢失了。...checkpoint checkpoint redo log 只是为了系统崩溃后恢复脏,如果对应已经刷新到了磁盘(flush 链表更改已经落到了磁盘上),也就是说即使现在系统崩溃,那么在重启后也用不着使用...1也是innodb_flush_log_at_trx_commit默认。 2:该系统变量值为2,表示在事务提交需要将redo日志写到操作系统缓冲区,但并不需要保证将日志真正刷新到磁盘。...,就会将该变量刷新到系统表空间页号为5页面中一个称之为Max Trx ID属性处,这个属性占用8个字节存储空间 系统下一次重新启动,会将上边提到Max Trx ID属性加载到内存,将该加上...undo log 记录, 如果发生回滚就只对上一步进行回滚 将被删除记录从正常链表移动到垃圾链表(备注: 一个被回收足够多垃圾链表, 默认 50% 阈值会发生合并) update undo

62410
领券