㈠ mysql 缓冲池 设置 多大
innodb_buffer_pool_instances 参数,将 buffer pool 分成几个区,每个区用独立的锁保护,这样就减少了访问 buffer pool 时需要上锁的粒度,以提高性能。准备一个空数据库,在这里我们将 performance_schema_events_waits_history_long_size 调大,是为了让之后实验数据能采集的更多,在此不多做介绍。使用 sysbench,准备一些数据,
设置 performance_schema,这次我们将仅开启观察项(生产者)hash_table_locks,并开启 waits 相关收集端(消费者)。(相关介绍参看实验 03)
为什么我们知道观察项应该选择 hash_table_locks?在 performance_schema.setup_instruments 表中,列出了所有观察项,但我们很难从中选出我们应观察哪个观察项。这时候,可以将所有观察项都启用,然后设计一些对比实验,比如使用几种不同的 SQL,观察这些操作影响了哪些观察项,找到共性或者区。还有一种高效的方式是搜索别人的经验,或者阅读 MySQL 源码。本例中 hash_table_locks 隐藏的比较深,使用了阅读 MySQL 源码和对比试验结合的方法。
㈡ CPU与高速缓存(数据库)
什么是高速缓存技术:
高速缓存英文是cache。一种特殊的存储器子系统,其中复制了频繁使用的数据,以利于CPU快速访问。存储器的高速缓冲存储器存储了频繁访问的 RAM 位置的内容及这些数据项的存储地址。当处理器引用存储器中的某地址时,高速缓冲存储器便检查是否存有该地址。如果存有该地址,则将数据返回处理器;如果没有保存该地址,则进行常规的存储器访问。因为高速缓冲存储器总是比主RAM 存储器速度快,所以当 RAM 的访问速度低于微处理器的速度时,常使用高速缓冲存储器。
高速缓存的作用:
在CPU开始执行任何指令之前,都会首先从内存中取得该条指令以及其它一些相关数据和信息。为了加快CPU的运行速度,几乎所有的芯片都采用两种不同类型的内部存储器,即高速缓存。缓存被用来临时存放一些经常被使用的程序片段或数据。
一级高速缓存是性能最好缓存类型,与解释指令和执行算术运算的处理单元一到构成CPU的核心。CPU可以在全速运行的状态下读取存放在一级高速缓存中的指令或数据。Intel的处理器产品一般都会具有32K的一级缓存,而象AMD或Via这种竞争对手的产品则会使用更多的一级缓存。
如果在一级缓存中没有找到所需要的指令或数据,处理器会查看容量更大的二级缓存。二级缓存既可以被集成到CPU芯片内部,也可以作为外部缓存。Pentium II处理器具有512K的二级缓存,工作速度相当于CPU速度的一半。Celeron以及更新的Pentium III芯片则分别具有128K和256K的在片二级缓存,能够在处理器全速下运行。
对于存放在速度较慢的二级缓存中的指令或数据,处理器往往需要等待2到4个时钟周期。为了充分利用计算资源,CPU可以在这段时间内查看和执行其它正在等候处理,但不需要使用额外数据的指令,从而提高整个系统的速度,把空闲时间降低到最低程度。
㈢ 怎么解决,数据库
1、 使用Connection pool机制
在数据库处理中,资源花销最大的是建立数据库连接,而且用户还会有一个较长的连接等待时间。若每一个用户访问时,都重新建立连接,不仅用户要长时间等待,而且系统有可能会由于资源消耗过大而停止响应。如果能够重用以前建立的数据库连接,而不是每次访问时都重新建立连接,则可以很好地解决这些问题,从而提高整个系统的性能。在IIS+ASP处理体系中,采用了Connection pool机制来保证这一点。
Connection pool的原理是,IIS+ASP体系中维持了一个连接缓冲池,建立好的数据库连接在ASP程序中的断开都是逻辑断开,而实际的物理连接被存储在池中并被维护。这样,当下一个用户访问时,直接从连接缓冲池中取得一个数据库连接,而不需重新连接数据库,因此,可以大大地提高系统的响应速度。
为了正确使用Connection pool时,必须注意以下几点:
a). 在MDAC2.0以前的版本中,必须经过数据库驱动程序的配置才能使用Connection Pool;在以后的版本中(比如MDAC2.1),缺省是使用Connection Pool机制。具体配置情况可以参见微软公司的站点()。
顺便提一句,在使用ORACLE数据库时,最好使用微软提供的驱动程序。
b). 每次数据库连接串参数必须相同,否则会被认为是不同的连接而重新去连接数据库,而不是使用缓冲池中的连接。最好的做法是将连接串存储在Application变量中,所有的程序在建立连接时使用Application变量的值。
c). 为了更好地使用和维护连接缓冲池,建议在程序中使用以下的方法对数据库连接进行操作,因为隐式使用数据库连接时不能利用缓冲池的机制:
¨ 显示地创建连接对象: Set conn=Server.CreateObject(“Adodb.connection”)
¨ 建立数据库连接:conn.open Application(“connection_string”),…
¨ 进行数据库操作:…
¨ 显式地关闭连接对象:conn.close
2、 利用直接的Ole DB驱动程序
㈣ 数据库缓冲池有什么作用
其实就是一个存储转发的作用,如果你访问的信息在缓冲池就直接在缓冲里面拿,这对于降低数据库压力,提高数据库性能和速度有明显的效果
㈤ Oracle数据库缓存大小怎么设置,比如要设置一个缓存为8G的。这个数值是怎么计算的
10g之前可以设置db_cache_size 来指定缓存大小
10g开始可以使用sga_target(当然你也可以不用,但是推荐用),来设定整个共享内存区域大小,包括缓存和共享池等。不需要再单独设置db cache
11g可以设置memory_target,不光包括了sga,还包括了pga,是所有给oracle的内存的总和,就更方便了。
如果你使用了sga_target或者memory_target,还同时设置了db_cache_size的话,那么你设置的db_cache_size成为了缓存的最小值。
需要分配给数据库多大内存取决于你的业务需要,你可以通过db cache advisor的视图,来估计是否需要更大的缓存。
㈥ mysql中缓冲池脏块占比多少影响缓冲池的大小吗
缓冲池用于从磁盘读取表和索引数据时,数据库管理器分配的用于高速缓存这些表或索引数据的内存区域。每个数据库至少有一个缓冲池。
数据库中的数据访问都需要经过缓冲池:
读的数据需要先读到缓冲池才能提交给应用,写的数据也是要先写到缓冲池才能进行I/O。
缓冲池时影响数据库性能最大的参数,所以必须合理地设计缓冲池。
㈦ 内存数据库主流的有哪些,并给出各自特点!
内存数据库从范型上可以分为关系型内存数据库和键值型内存数据库。
在实际应用中内存数据库主要是配合oracle或mysql等大型关系数据库使用,关注性能。
作用类似于缓存,并不注重数据完整性和数据一致性。
基于键值型的内存数据库比关系型更加易于使用,性能和可扩展性更好,因此在应用上比关系型的内存数据库使用更多。
比较FastDB、Memcached和Redis主流内存数据库的功能特性。
FastDB的特点包括如下方面:
1、FastDB不支持client-server架构因而所有使用FastDB的应用程序必须运行在同一主机上;
2、fastdb假定整个数据库存在于RAM中,并且依据这个假定优化了查询算法和接口。
3、fastdb没有数据库缓冲管理开销,不需要在数据库文件和缓冲池之间传输数据。
4、整个fastdb的搜索算法和结构是建立在假定所有的数据都存在于内存中的,因此数据换出的效率不会很高。
5、Fastdb支持事务、在线备份以及系统崩溃后的自动恢复。
6、fastdb是一个面向应用的数据库,数据库表通过应用程序的类信息来构造。
FastDB不能支持Java API接口,这使得在本应用下不适合使用FastDB。
Memcached
Memcached是一种基于Key-Value开源缓存服务器系统,主要用做数据库的数据高速缓冲,并不能完全称为数据库。
memcached的API使用三十二位元的循环冗余校验(CRC-32)计算键值后,将资料分散在不同的机器上。当表格满了以后,接下来新增的资料会以LRU机制替换掉。由于 memcached通常只是当作缓存系统使用,所以使用memcached的应用程式在写回较慢的系统时(像是后端的数据库)需要额外的程序更新memcached内的资料。
memcached具有多种语言的客户端开发包,包括:Perl、PHP、JAVA、C、Python、Ruby、C#。
Redis
Redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了C++、Java、Python,Ruby,Erlang,PHP客户端。
㈧ ORACLE 数据库缓冲区缓存与共享池SQL查询和PL/SQL函数结果缓存的区别
1、数据库缓冲区DB_BUFFER只能缓存访问过的BLOCK,部分解决了物理读的问题,查询仍然需要大量的逻辑读。
2、SQL缓存结果集/*+RESULT_CACHE*/它缓存的是查询的结果。不在需要大量的逻辑读,不在需要任何的复杂计算,而是直接将已经缓存的结果返回。
3、对于采用了RESULT_CACHE的函数,Oracle自动将函数的返回结果缓存,下次执行的时候,不会实际执行函数,而是直接返回结果。由于缓存的结果存储在SGA中,因此所有的会话可以共享这个结果。
㈨ 如何实现缓存系统的更新机制
1)设计两个缓存池,记为A、B,而A和B的内容都是从后端服务器数据库中获取到的数据。正常情况下,客户端的请求都是从缓存池A中获取缓存内容,
同时,设置一个全局的变量ref用于记录当前正在访问缓存A的客户端数量,来一个客户端请求将ref值加1,响应完一个客户端请求后ref减一。
2)当缓存更新时间到时,如果ref不为0,则我们不能直接更新缓存,因为这时有客户端正在从缓存池A取数据。这里,我们可以借鉴Redis的
rehash思想,更新时间到,我们将客户端的访问都引导到B缓存池,此时的缓存池A不再接受新的客户端数据请求,A的ref变量只减不增,当ref变量
减少到0时,我们便可以更新A缓存池中的内容了。
㈩ 关于DB2数据库的参数调优技巧
在开始前 请关闭IBM目录服务器 将上下文切换到IBM目录服务器DB 实例拥有者 一般是ldapdb 用户 比如
在Unix系统里 输入
su ldapdb
在Windows系统里 输入
db cmdset DB INSTANCE=ldapdb
为了调节DB 参数 运行db tunings sh脚本 你可以在这里下载:// sofare ibm /ibmdl/pub/sofare/tivoli_support/misc/Security/AMeB/_am /tuning_guide_scripts tar
或者通过ftp地址
ftp://ftp sofare ibm /sofare/tivoli_support/misc/Security/AMeB/am /tuning_guide_scripts tar
Web页面需要注册用户名和密码
这个脚本的文件系统拥有者必须是DB 实例拥有者 一般就是ldapdb 用户 文件系统组应该和实例拥有者相同(一般是dbsysadm) 脚本必须在DB 实例拥有者的上下文中使用
脚本中的ibmdefaultbp和ldapbp参数控制着DB 的缓冲池 db _turnings sh脚本 设置了DB 缓冲池的建议大小 其他一些可选的设置在脚本的注释里写明了 IBM目录服务器的性能随着DB 缓冲池的增长而提高 然而在大多数情况下 通过这样的参数调节方式 你可以预见不超过 %的性能提高
DB 缓冲池是DB 缓存数据表和索引的地方 DB 用户使用索引来在查询时迅速找到该获取哪个表行项 需要更多信息 请参考IBM Directory Server Tuning Guide
显示和验证当前设置
输入如下命令来显示当前的DB 参数调节设置的结果
db get database configuration for ldapdb |
egrep DBHEAP|SORTHEAP|MAXLOCKS|MINMIT|UTIL_HEAP_SZ|APPLHEAPSZ
db connect to ldapdb
db select bpname npages pagesize from syscat bufferpools
db terminate
如果某个堆配置参数过低 就将出现一些功能性的问题 输入如下命令来显示当前的堆参数设置
db get db cfg for ldapdb | grep HEAP
下面是一个使用了推荐值的多种堆参数的输出例子显示
Database heap ( KB) (DBHEAP) =
Utilities heap size ( KB) (UTIL_HEAP_SZ) =
Max appl control heap size ( KB) (APP_CTL_HEAP_SZ) =
Sort list heap ( KB) (SORTHEAP) =
SQL statement heap ( KB) (STMTHEAP) =
Default application heap ( KB) (APPLHEAPSZ) =
Statistics heap size ( KB ) (STAT_HEAP_SZ) =
如果一个堆参数小于最小值 输入如下命令将其增大到最小值
db update db cfg for ldapdb using parm_name parm_value
这里parm_name是上文输出中的第三栏的字样(无括号) parm_value是最后一栏的值
如果堆参数设置的过高或者过低 IBM的目录服务器都会以失效来提示出现了问题 在这种情况下 需要查看诸如IBM Directory Server V (IDS )的cli error文件或者IBM Tivoli Directory Server V (IDS v )的db cli log或者其他一些文件 在IDS v 系统中 该文件缺省目录在Solaris的/var/ldap/和AIX的/tmp中 在IDS v 和后来系统中 Solaris和AIX的缺省目录都是/var/ldap
注意db look能够在一条命令下提供关于数据库及其配置的足够多的信息 例子如下
db look d ldapdb u ldapdb p o output_file
output_file是存储结果的文件位置
关于IBM目录服务器运行的警告
DB 参数调节使用了db terminate 如果当该命令发出 IBM目录服务器slapd或ibmslapd进程在运行 它将阻止服务器的部分功能 所有缓存的搜索看起来反应正常 其他的搜索将会简单的变为无结果或者出现错误信息 恢复功能将会重启IBM目录服务器 因此最好是在调节DB 参数时关闭IBM目录服务器
关于缓冲池内存使用的警告
如果任何的缓冲池被设置过高 DB 将会因为缺少足够内存而无法启动 如果出现该问题将会有一个核心转储的文件 但是通常没有错误信息
在AIX系统里 系统错误日志将会报告一个内存分配失败 查看这个日志请输入
errpt a | more
使用太大的缓冲池大小来恢复一个被分在系统里的数据库将会导致恢复失败 查看//publib boulder ibm /infocenter/tivihelp/v r /topic/ ibm itame doc_ /am _perftune #idtrouble来解决这个问题
如果DB 因为缓冲池过大而无法启动 请重新调节DB 参数
关于MINMIT的警告
lishixin/Article/program/DB2/201311/11229