Oracle_TimesTen内存数据库_6.0版推荐编程实践
timesten常见的一些简单问题
环境为:instance_name为eservice安装目录为/home/timesten/TimesTen下面这些问题是针对新手而言的,通过这些问题可以帮助刚接触timesten的人可以快速配置timesten。
如何启动/home/timesten/TimesTen/eservice/startup/tt_eservice [start|stop|restart]如何访问[timesten@rh44server ~]$ ttisqlCopyright (c) 1996-2007, Oracle. All rights reserved.Type ? or "help" for help, type "exit" to quit ttIsql.All commands must end with a semicolon character.Command> connect tt_eservice;Connection successful:DSN=TT_eservice;UID=eservice;DataStore=/home/timesten/TimesTen/eservice/info/TT_eservice;Datab aseCharacterSet=ZHS16GBK;ConnectionCharacterSet=ZHS16GBK;DRIVER=/home/timesten/TimesTen/ eservice/lib/libtten.so;TypeMode=0;(Default setting AutoCommit=1)Command>应用程序如何连接答:有三种模式:Direct Driver连接:Timesten推荐连接方式,由于没有了协议转换的开销,这种连接方式具有最高的效率。
对于JDBC应用程序,可以通过JDBC库访问ODBC的direct driver。
Oracle In Memory技术最佳实践
Reporting
ETL
ODS
Staging Layer
Foundation Layer 3rd Normal Form
Performance Layer STAR SCHEMA
Pre-Cal KPIs
• 直接对OLTP数据启用实时报告 • 加快ETL过程的数据提取部分 • 无需单独的ODS
• 星型模式和预先计算的KPI
In Memory聚集
• 快速扫描填充的内存 过程中创建报告大纲 • 立即生成报告
In Memory:内存表达式
Example: Compute total sales price Net = Price + Price * Tax
In-Memory Column Store Sales
• 分析查询包含复杂的表达式 – 最初针对每一行进行评估
In Memory架构
New In-Memory Format
• 行与列格式同时存在
SALES
Row Format
SALES
Column Format
SALES
• 同时可用且事务一致 • 分析报表使用列格式 • 在线处理使用行格式
In Memory架构
Memory JOURNAL
• 日记用于使列存储在事务上保持 一致
• 热图跟踪数据访问频率 • 可以将策略定义为
• 将数据带入IM列存储 • 随着数据冷却增加压缩级别 • 从IM列存储中逐出冷数据
Sales_Q4
In Memory:快速启动
Buffer Cache
In-Memory Column Store
DBFILE1
Index Table Table
Visual_C++6.0数据库编程
和转换。
查询结果优化
针对大型数据库或复杂查询,可 能需要对查询进行优化以提高性 能。优化方法包括使用索引、减
少数据量、优化SQL语句等。
05
数据库编程进阶
存储过程与触发器
1 2
03
SQL数据类型
SQL支持多种数据类型,如整数、浮点数、字符型、日期型等。在创建
表时,需要为每个列指定合适的数据类型。
数据查询语句
简单查询
使用SELECT语句可以从一个或多个表中检索数据。通过指定列名和表名,可以选择需 要查询的列和表。
条件查询
使用WHERE子句可以添加查询条件,过滤出满足特定条件的数据。条件可以是列与值 之间的比较,也可以是多个条件组合的逻辑表达式。
关闭数据库时,需要释放与数据库相关的资源,并断开与数据库的连接。使用ODBC API函数时,可以调用 SQLFreeHandle和SQLDisconnect函数来释放资源和断开连接。使用ADO对象模型时,可以调用连接对象的 Close方法来关闭数据库连接。
数据表操作
要点一
创建数据表
在Visual C 6.0中,可以使用SQL语 句或ADO对象模型来创建数据表。使 用SQL语句时,需要编写CREATE TABLE语句来定义数据表的结构和字 段。使用ADO对象模型时,可以创建 ADO命令对象,并执行SQL语句来创 建数据表。
事务特性
原子性(Atomicity)、一致性(Consistency)、隔离性( Isolation)、持久性(Durability),简称ACID。
事务处理步骤
开始事务、执行事务、结束事务(提交或回滚)。
Timesten使用实践
Timesten使用实践作者:新炬网络高级工程师孙其成随着运营商业务量的不断增加,大家都在寻找满足业务需求的更高效、安全的系统架构。
如何摒弃原有的架构,摒弃昂贵的小型机,实现高可用?分布式、集群、内存库,成为了首要的选择。
运营商选择Timesten作为内存库的原因主要是有Oracle强大的后台支持、成熟的培训体系,并且与Oracle物理库结合紧密。
孙其成首先讲解了Timesten的基础知识,深入到体系架构,高可用部分,上线新结构的特点,与老架构的比较,用数据说话。
再从业务出发讲解运营商业务在新体系架构中的使用流程,架构的变更,明确涉及业务的流向及处理方式。
最后还分享实践中的案例以及使用经验。
►TimesTen结构·Data Store,数据库所有数据的报错区域;·日志缓存(log buffer),用于暂时存储记录Data Store变更的日志;·临时数据区域,临时存储执行计划等数据的共享区域,排序等操作临时使用;·检查点文件保存了两个互相备份的dsname.ds0和dsname.ds1,可以理解为Oracle的数据文件,是内存数据库保存于磁盘的数据镜像;·事务日志文件dsname.logNNN,保存Data Store的数据变化。
TimesTen内存结构1、提交事物;2、写更新到log buffer;3、批量刷新到磁盘;4、发送日志到备端(非阻塞性);5、主端接受备端反馈;6、备端写log buffer;7、备端日志刷新到磁盘。
►TimesTen新系统架构Case1:高可用自动双机切换的危害性;Case2:长事务的影响及处理方法;Case3:事务日志堆积的应对方法;Case4:连接数超限的影响及处理方法;Case5:性能监控的代价。
►TimesTen使用中经验·数据量不建议超过100G;·应用程序查询也需要提交(开发);·禁止应用程序进行DDL操作表结构(开发);·严格控制应用连接数,建议小于600个连接(开发);·应用连接尽可能使用长连接,避免频繁连接/断开连接(开发);·事务日志(Trans Log)不能手动删除;·避免批量DML,建议分批提交;·避免长事务/大事务操作,坚决避免大事务/长事务回滚;·Truncate不会释放内存,Drop才能释放;·最小权限控制原则,应用账号避免授权admin/all权限;·Seq的Cache设置2000或更大,避免Cache争用;·严格控制表结构设计、变更前建议严格评审;·定期统计收集、尽可能采用最优的统计信息;·完善的数据清理机制,保证最小的有效业务数据;·尽量避免运维/监控在内存库中创建临时表。
Oracle TimesTen体验
原文来自:/html/2008/537.html回头看自己写的第一篇Timesten的文章,居然已经过去了1年半。
事情有开始,应该就有个结束,完成它吧,即使今天碰到一万个挫折。
上回书说到,―1. 安装TimesTen 7.0 …‖,现在最新版本已经是TimesT en Release 7.0.5.0.0了,这次重新安装了TimesTen,安装过程中我的手很欠,点上了本来不是默认选项的Enable Access Control,启用了用户存取权限控制,导致后面不得不查阅各个联机文档,费尽心机,才完成整个实验。
当然手欠也有手欠的好处,否则谁会在刚开始实验一个新产品的时候去研究那些劳什子的安全设置呢。
2. 创建一个系统DSN,命名为ttdemo。
按照OTN上的How to Create TimesT en Databases,如果没有激活Access Control,应该一路下去很顺畅,我却卡在了第43页上,连接Datastore总是报错。
D:\Temp>ttIsql -connStr ―DSN=ttdem o;UID=kamus‖Copyright (c) 1996-2008, Oracle. All rights reserved.Type ? or ―help‖ for help, type ―exit‖ to quit ttIsql.All commands must end w ith a semicolon character.connect ―DSN=ttdemo;UID=kamus‖;7001: User authentication failedThe command failed.Done.耗时良久,最终发现,是因为启用了Access Control,所以必须要在Timesten中也创建跟Oracle Database中相同的Internal User,并且赋予这个User相应的权限,才可以连接后台是Oracle数据库的Datastore。
oracle课程设计的总结
oracle课程设计的总结一、教学目标本课程的教学目标是使学生掌握Oracle数据库的基本知识和操作技能,能够熟练使用Oracle数据库进行数据管理和查询。
具体目标如下:1.了解数据库的基本概念和原理。
2.掌握Oracle数据库的安装和配置方法。
3.熟悉Oracle数据库的常用操作和命令。
4.理解数据库的表结构设计和SQL语言。
5.掌握数据库的备份和恢复方法。
6.能够独立安装和配置Oracle数据库。
7.能够使用SQL语言进行数据增删改查操作。
8.能够设计和优化数据库表结构。
9.能够进行数据库的备份和恢复操作。
10.能够编写简单的存储过程和触发器。
情感态度价值观目标:1.培养学生对数据库技术的兴趣和好奇心。
2.培养学生团队合作意识和解决问题的能力。
3.培养学生对数据库安全和隐私的重视。
二、教学内容根据课程目标,教学内容主要包括以下几个部分:1.数据库基本概念:介绍数据库的定义、发展历程和基本术语。
2.Oracle数据库安装与配置:讲解Oracle数据库的安装步骤、环境变量设置和网络配置。
3.Oracle数据库操作:学习数据库的创建、删除、启动和关闭操作,以及常用的SQL命令。
4.数据库表结构设计:讲解表的结构设计原则,学习使用数据库设计工具进行表结构设计。
5.数据查询与操作:学习SQL语言进行数据的增删改查操作,掌握高级查询技巧。
6.数据库安全管理:介绍数据库的用户管理、权限分配和安全策略。
7.数据库备份与恢复:学习数据库的备份方法、恢复策略和故障排除。
8.存储过程和触发器:讲解存储过程和触发器的概念,学习编写和调用存储过程和触发器。
三、教学方法本课程采用多种教学方法相结合的方式,包括讲授法、讨论法、案例分析法和实验法等。
1.讲授法:通过教师的讲解,使学生掌握数据库的基本概念和原理。
2.讨论法:学生进行小组讨论,培养团队合作意识和解决问题的能力。
3.案例分析法:通过分析实际案例,使学生理解和掌握数据库的操作技巧。
内存数据库 TimesTen 简介
第一,传统的数据库和应用程序是两个不同的应用系统, 它们之间的通讯是通过IPC连接来实现的;而TimesTen 则是直接把数据库的内存映射到应用程序的地址空间中, 简单来说,这时候TimesTen访问数据库中的数据,就象 访问应用程序自己的数组、字符串变量一样,只不过 TimesTen有一套完善的机制来实现数据的一致性和完整 性。这种直接嵌入到应用程序的运行地址空间机制比IPC 要高效很多。
Oracle TimesTen 内存数据管理软件由TimesTen数据库服务器、数据复 制选件和高速缓存选件三部分组成。
Oracle TimesTen In- Memory Database Oracle TimesTen In-Memory Database 是一个内存优化的关系数据库,它为应用程序提供了当今实 时企业和行业(例如电信、资本市场和国防)所需的即时响应性和非常高的吞吐量。Oracle TimesTen In-Memory Database 作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的 SQL 接口对 完全位于物理内存中的数据存储区进行操作。 Replication – TimesTen to TimesTen Replication – TimesTen to TimesTen 是 Oracle TimesTen In-Memory Database 的一个选项,它 支持服务器间的实时数据复制,以获得高可用性和负载共享。数据复制配置可以是双机热备份 (activestandby) 或负载均衡 (active-active),可以使用异步或同步传输,可以包含冲突检测和冲突解决以及在 故障服务器恢复后自动重新同步。数据复制与 Cache Connect to Oracle 选项完全兼容。 Cache Connect to Oracle Cache Connect to Oracle 是 Oracle TimesTen In- Memory Database 的一个选项,它为位于应用 程序层中的 Oracle 数据创建实时、可更新的高速缓存。它免除了后端系统的计算负担,并支持反应灵敏 且可伸缩的实时应用程序。Cache Connect to Oracle 能够将 Oracle 数据的子集加载到 TimesTen 中, 能够双向传播更新,能够使对非高速缓存数据的 SQL 请求的透传自动化,并能够在故障之后自动重新同步 数据。Cache Connect to Oracle 与 Replication – TimesTen to TimesTen 选项完全兼容。
Oracle TimesTen内存数据库技术白皮书
Oracle TimesTen 产品和技术Oracle 白皮书2005 年 12 月引言 (3)“满足实时应用场合的需要” (3)实时应用程序的发展 (3)实时行业 (3)实时企业 (4)实时数据管理软件 (4)应用程序层部署 (4)产品 (5)Oracle TimesTen In- Memory Database (5)Replication – TimesTen to TimesTen (5)Cache Connect to Oracle (5)内存中数据库技术 (5)ORACLE TIMESTEN 的物理结构 (6)应用程序层共享库 (6)内存中数据结构 (7)系统进程 (8)管理程序 (8)检查点和日志文件 (8)数据复制技术 (8)高速缓存技术 (9)深入研究 IMDB 技术 (11)查询优化 (11)缓冲池管理 (11)索引结构 (12)差别体现在哪里 (13)非凡的性能 (13)可伸缩性 (13)响应时间 (14)实时功能 (15)数据管理 (15)查询处理 (19)数据复制 (19)高速缓存 (21)事件处理 (24)结论 (25)Oracle TimesTen 产品和技术引言“Oracle 收购 TimesTen 是一次绝好的技术整合,它将TimesTen 高性能内存中体系结构与 Oracle 巨大的数据库潜力结合起来”—Rob Hailstone,2005 年 6 月,Oracle 收购了内存中数据库软件的领先供应商TimesTen, Inc.。
Oracle 产品与 TimesTen 产品的结合为端到端数据管理提供了独有的单供应商解决方案。
本文介绍了 Oracle TimesTen 产品和技术及其与其他 Oracle 产品集成方面的问题,并使用该软件及其手册前的“书面”评估。
“满足实时应用场合的需要”Oracle TimesTen 产品为性能关键系统提供了应用层数据管理,并针对快速响应以及实时高速缓存 Oracle 数据进行了优化。
oraclen内存数据库timesten的C++编程资料
Oracle TimesTen In-Memory Database TTClasses GuideRelease 7.0B31691-03Copyright ©1996, 2007, Oracle. All rights reserved.ALL SOFTWARE AND DOCUMENTATION (WHETHER IN HARD COPY OR ELECTRONIC FORM) ENCLOSED AND ON THE COMPACT DISC(S) ARE SUBJECT TO THE LICENSE AGREEMENT.The documentation stored on the compact disc(s) may be printed by licensee for licensee’s internal use only. Except for the foregoing, no part of this documentation (whether in hard copy or electronic form) may be reproduced or transmitted in any form by any means, electronic or mechanical, including photocopying, recording, or any information storage and retrieval system, without the prior written permission of TimesTen Inc.Oracle, JD Edwards, PeopleSoft, Retek, TimesTen, the TimesTen icon, MicroLogging and Direct Data Access are trademarks or reg-istered trademarks of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners.The Programs (which include both the software and documenta-tion) contain proprietary information; they are provided under a li-cense agreement containing restrictions on use and disclosure and are also protected by copyright, patent, and other intellectual and industrial property laws. Reverse engineering, disassembly, or de-compilation of the Programs, except to the extent required to obtain interoperability with other independently created software or as specified by law, is prohibited.The information contained in this document is subject to change without notice. If you find any problems in the documentation, please report them to us in writing. This document is not warranted to be error-free. Except as may be expressly permitted in your li-cense agreement for these Programs, no part of these Programs may be reproduced or transmitted in any form or by any means, elec-tronic or mechanical, for any purpose.September 2007Printed in the United States of AmericaContentsAbout this GuideTimesTen documentation . . . . . . . . . . . . . . . . . . . . . 1Background reading . . . . . . . . . . . . . . . . . . . . . . . 2Conventions used in this guide . . . . . . . . . . . . . . . . . . . 3Technical Support . . . . . . . . . . . . . . . . . . . . . . . . 5 1Introduction to TTClassesOverview of TTClasses . . . . . . . . . . . . . . . . . . . . . . 7Scope of TTClasses. . . . . . . . . . . . . . . . . . . . . . . . 7 2Compiling TTClassesCompiling TTClasses on UNIX. . . . . . . . . . . . . . . . . . . 9Compiling TTClasses on Windows . . . . . . . . . . . . . . . . . 9Compilation options . . . . . . . . . . . . . . . . . . . . . . .10 Compiling TTClasses for client/server mode . . . . . . . . . . . .10 Installing TTClasses after compilation (UNIX only). . . . . . . . . . .11TTClasses compiler macros . . . . . . . . . . . . . . . . . . . .11 TTEXCEPT: Throw C++ exceptions . . . . . . . . . . . . . . .11USE_OLD_CPP_STREAMS: Use old C++ iostream code . . . . . . .11TTDEBUG:Generate additional debugging and error checking logic . . .12TT_64BIT: Use TTClasses with 64-bit TimesTen . . . . . . . . . .12Platform-specific compiler macros . . . . . . . . . . . . . . . .12 3Class DescriptionsCommonly used TTClasses . . . . . . . . . . . . . . . . . . . .14 TTStatus . . . . . . . . . . . . . . . . . . . . . . . . . .15TTConnection . . . . . . . . . . . . . . . . . . . . . . . .19TTCmd . . . . . . . . . . . . . . . . . . . . . . . . . . .25TTConnectionPool . . . . . . . . . . . . . . . . . . . . . .44TTGlobal (logging) . . . . . . . . . . . . . . . . . . . . . .47 System catalog classes . . . . . . . . . . . . . . . . . . . . . .50 TTCatalog . . . . . . . . . . . . . . . . . . . . . . . . . .51TTCatalogTable. . . . . . . . . . . . . . . . . . . . . . . .54TTCatalogColumn. . . . . . . . . . . . . . . . . . . . . . .56TTCatalogIndex . . . . . . . . . . . . . . . . . . . . . . .58 XLA classes . . . . . . . . . . . . . . . . . . . . . . . . . .60 TTXlaPersistConnection . . . . . . . . . . . . . . . . . . . .61TTXlaRowViewer. . . . . . . . . . . . . . . . . . . . . . .65iiiTTXlaTableHandler . . . . . . . . . . . . . . . . . . . . . .69TTXlaTableList. . . . . . . . . . . . . . . . . . . . . . . .72 Internal classes . . . . . . . . . . . . . . . . . . . . . . . . .74 4Using TTClassesUsing TTCmd, TTConnection, and TTStatus. . . . . . . . . . . . . .75TTClasses logging . . . . . . . . . . . . . . . . . . . . . . . .77Using XLA classes . . . . . . . . . . . . . . . . . . . . . . . .78Acknowledging XLA updates at transaction boundaries . . . . . . . . .78 Indexiv Oracle TimesTen In-Memory Database TTClasses GuideAbout this GuideOracle TimesTen In-Memory Database is a high-performance, in-memorydatabase that supports the ODBC and JDBC interfaces. The TimesTen C++Interface Classes (TTClasses) library was written to provide an easy-to-use,high-performance interface to Oracle TimesTen In-Memory Database. This C++class library provides wrappers around the most common ODBC functionality.This guide is for application developers who use and administer TimesTenODBC.To work with this guide, you should understand how database systems work. Youshould also have knowledge of SQL (Structured Query Language) and ODBC.TimesTen documentationTimesTen documentation is available on the product distribution media and onthe Oracle Technology Network:/technology/documentation/timesten_doc.html.Including this guide, the TimesTen documentation set consists of thesedocuments:Book Titles DescriptionOracle TimesTen In-Memory Database Installation Guide Contains information needed to install and configure TimesTen on all supported platforms.Oracle TimesTen In-Memory Database Introduction Describes all the available features in the Oracle TimesTen In-Memory Database.Oracle TimesTen In-Memory Database Operations Guide Provides information on configuring TimesTen and using the ttIsql utility to manage a data store. This guide also provides a basic tutorial for TimesTen.Oracle TimesTen In-Memory Database C Developer’s and Reference Guideand theOracle TimesTen In-Memory Database Java Developer’s and Reference Guide Provide information on how to use the full set of available features in TimesTen to develop and implement applications that use TimesTen.Oracle TimesTen In-Memory Database API Reference Guide Describes all TimesTen utilities, procedures, APIs and provides a reference to other features of TimesTen.About this Guide12 Oracle TimesTen In-Memory Database TTClasses GuideBackground readingFor a Java reference, see:•Horstmann, Cay and Gary Cornell. Core Java(TM) 2, Volume I--Fundamentals (7th Edition) (Core Java 2). Prentice Hall PTR; 7 edition (August 17, 2004).A list of books about ODBC and SQL is in the Microsoft ODBC manualincluded in your developer’s kit. Your developer’s kit includes the appropriate ODBC manual for your platform:•Microsoft ODBC 3.0 Programmer’s Reference and SDK Guide provides allrelevant information on ODBC for Windows developers.•Microsoft ODBC 2.0 Programmer’s Reference and SDK Guide , included online in PDF format, provides information on ODBC for UNIX developers.For a conceptual overview and programming how-to of ODBC, see:Oracle TimesTen In-MemoryDatabase SQL ReferenceGuideContains a complete reference to all TimesTen SQL statements, expressions and functions, including TimesTen SQL extensions.Oracle TimesTen In-MemoryDatabase Error Messagesand SNMP TrapsContains a complete reference to the TimesTen error messages and information on using SNMP Traps with TimesTen.Oracle TimesTen In-MemoryDatabase TTClasses GuideDescribes how to use the TTClasses C++ API to use the features available in TimesTen to develop and implement applications.TimesTen to TimesTenReplication Guide Provides information to help you understand how TimesTen Replication works and step-by-stepinstructions and examples that show how to performthe most commonly needed tasks.This guide is for application developers who use andadminister TimesTen and for system administratorswho configure and manage TimesTen Replication.TimesTen Cache Connect to Oracle Guide Describes how to use Cache Connect to cache Oracledata in TimesTen data stores. This guide is fordevelopers who use and administer TimesTen forcaching Oracle data.Oracle TimesTen In-Memory Database Troubleshooting Procedures GuideProvides information and solutions for handlingproblems that may arise while developing applicationsthat work with TimesTen, or while configuring ormanaging TimesTen.About this Guide 3•Kyle Geiger. Inside ODBC . Redmond, WA: Microsoft Press. 1995.For a review of SQL, see:•Melton, Jim and Simon, Alan R. Understanding the New SQL: A Complete Guide . San Francisco, CA: Morgan Kaufmann Publishers. 1993.•Groff, James R. / Weinberg, Paul N. SQL: The Complete Reference, Second Edition. McGraw-Hill Osborne Media. 2002.For information about Unicode, see:•The Unicode Consortium, The Unicode Standard, Version 5.0,Addison-Wesley Professional, 2006.•The Unicode Consortium Home Page at Conventions used in this guideTimesTen supports multiple platforms. Unless otherwise indicated, theinformation in this guide applies to all supported platforms. The term Windows refers to Windows 2000, Windows XP and Windows Server 2003. The term UNIX refers to Solaris, Linux, HP-UX, Tru64 and AIX.TimesTen documentation uses these typographical conventions:TimesTen documentation uses these conventions in command line examples and descriptions:If you see...It means...code font Code examples, filenames, and pathnames.For example, the .odbc.ini. or ttconnect.ini file.italic codefont A variable in a code example that you must replace.For example:Driver=install_dir /lib/libtten.slReplace install_dir with the path of your TimesTeninstallation directory.If you see...It means...fixed widthitalics Variable; must be replaced with an appropriate value. In some cases, such as for parameter values in built-inprocedures, you may need to single quote (' ') the value.[ ]Square brackets indicate that an item in a command line is optional.{ }Curly braces indicated that you must choose one of theitems separated by a vertical bar ( | ) in a command line.| A vertical bar (or pipe) separates arguments that you mayuse more than one argument on a single command line....An ellipsis (. . .) after an argument indicates that you mayuse more than one argument on a single command line.%The percent sign indicates the UNIX shell prompt.#The number (or pound) sign indicates the UNIX rootprompt.TimesTen documentation uses these variables to identify path, file and usernames:If you see...It means...install_dir The path that represents the directory where the currentrelease of TimesTen is installed.TTinstance The instance name for your specific installation ofTimesTen. Each installation of TimesTen must beidentified at install time with a unique alphanumericinstance name. This name appears in the install path. Theinstance name “giraffe” is used in examples in this guide.bits or bb Two digits, either 32 or 64, that represent either the 32-bitor 64-bit operating system.release or rr Two digits that represent the first two digits of the currentTimesTen release number, with or without a dot. Forexample, 51 or 7.0 represents TimesTen Release 7.0.jdk_version Two digits that represent the version number of themajor JDK release. Specifically, 14 represent JDK 1.4;5 represents JDK 5.timesten A sample name for the TimesTen instance administrator.You can use any legal user name as the TimesTenadministrator. On Windows, the TimesTen instanceadministrator must be a member of the Administratorsgroup. Each TimesTen instance can have a uniqueinstance administrator name.DSN The data source name.4 Oracle TimesTen In-Memory Database TTClasses GuideTechnical SupportFor information about obtaining technical support for TimesTen products, go tothe following Web address:/support/contact.htmlAbout this Guide56 Oracle TimesTen In-Memory Database TTClasses Guide1 Introduction to TTClassesThis chapter includes the following topics:•Overview of TTClasses•Scope of TTClassesOverview of TTClassesThe Oracle TimesTen In-Memory Database provides high performance through astandard ODBC and SQL interface. Unlike other RDBMS implementations ofODBC, access to TimesTen row ODBC is extremely fast. The TimesTen C++Interface Classes (TTClasses) was developed to meet the demand for an API thatis easier to use than ODBC, but does not sacrifice performance. This C++ classlibrary provides wrappers around the most common ODBC functionality. Usingthis library allows easier interaction with TimesTen data stores.In addition, the TTClasses library is intended to promote best practices whenwriting application software that uses the TimesTen Data Manager. The libraryuses TimesTen in an optimal manner. For example, autocommit is disabled bydefault. Parameterized SQL is strongly encouraged, and its use is greatlysimplified when compared to hand-coded ODBC.TimesTen includes demos for TTClasses in the i nstall_dir/demo/ttclassesdirectory.Scope of TTClassesTTClasses is a wrapper around all major ODBC functionality.In addition to providing a C++ interface to TimesTen’s ODBC interface,TTClasses also provides an interface to TimesTen’s Transaction Log API (XLA).XLA allows an application to monitor one or more tables in a TimesTen datastore. When other applications change that table, the changes are reportedthrough XLA to the monitoring application. TTClasses provides an easy-to-useinterface to the most commonly used aspects of XLA functionality. For moreinformation about XLA, see Chapter 3, “XLA and TimesTen EventManagement” in Oracle TimesTen In-Memory Database C Developer’s andReference Guide.Introduction to TTClasses7Note: TTClasses has been integrated with TimesTen since release 6.0. Previousversions of TTClasses were distributed separately from TimesTen, so earlierversions of TTClasses were compatible with multiple TimesTen versions.Starting with TimesTen 6.0, TTClasses is no longer tested or supported incombination with any other TimesTen release besides the release that it shipswith.8Oracle TimesTen In-Memory Database TTClasses Guide2 Compiling TTClassesTTClasses comes preconfigured during TimesTen installation. To compileTTClasses, use the make (UNIX) or nmake (Windows) command.Compiling TTClasses on UNIXTo build TTClasses and run the TTClasses demo programs, ensure that your shellenvironment variables are set correctly. Assume your TimesTen 7.0 instance isnamed tt70 and is installed at the following location:/opt/TimesTen/tt70Run one of the following scripts or add a call to one of these scripts in your logininitialization script (.profile or .cshrc):/opt/TimesTen/tt70/bin/ttenv.sh(sh/ksh/bash)/opt/TimesTen/tt70/bin/ttenv.csh(csh/tcsh)If you choose an instance name other than tt70, use that name in place of tt70 inthe above directory paths.After your PATH and shared library load path are configured properly, change tothe TTClasses directory and compile TTClasses:$ cd /opt/TimesTen/tt70/ttclasses$ makeCompiling TTClasses on WindowsChange to the TTClasses installation directory. The default location is:C:\TimesTen\tt70\ttclassesTo compile this Makefile, ensure that the PATH, INCLUDE, and LIBenvironment variables point to the correct Visual Studio directories. There is abatch file named “VCV ARS32.BAT” (Visual C++ 6.0) or “VSV ARS32.BAT”(Visual Studio .NET) in the Visual Studio directory tree that will set up yourPATH, INCLUDE, and LIB environment variables correctly. Run this batch file.9If you are using Visual Studio .NET:C:\TimesTen\tt70\ttclasses> nmake /f Makefile.vsdotnetIf you are using VC++ 6.0:C:\TimesTen\tt70\ttclasses> nmakeCompilation optionsThe following “make target” options are available when you compile TTClasses:•all: Build a shared optimized library•shared_opt: Build a shared optimized library•shared_debug: Build a shared debug library•static_opt: Build a static optimized library•static_debug: Build a static debug library•opt: Build the optimized libraries (shared and static)•debug: Build the debug libraries (shared and static)•clean: Delete the TTClasses libraries and object filesNote: If you do not specify an option when you compile, the default is all.To specify a make target, use the name of the make target on the command line.To build a shared, debug version of TTClasses:(Unix)$ make clean shared_debug(Windows)C:\TimesTen\tt70\ttclasses> nmake clean shared_debugCompiling TTClasses for client/server modeTo compile TTClasses for client/server mode, use the “MakefileCS” makefile.Example 2.1To build a client/server version of TTClasses:(Unix)$ make -f MakefileCS clean all(Windows)10Oracle TimesTen In-Memory Database TTClasses GuideC:\TimesTen\tt70\ttclasses> nmake /f MakefileCS clean allInstalling TTClasses after compilation (UNIX only)After compilation, install the library so all users of the TimesTen instance can useTTClasses. This step is not part of compilation because different privileges arerequired for installing TTClasses than for compiling TTClasses.Note that installation occurs automatically after compilation on Windows.Example 2.2$ cd /opt/TimesTen/tt70/ttclasses$ make installTTClasses compiler macrosMost users do not need to manipulate the TTClasses Makefile. If you need tomodify the TTClasses Makefile manually, you can add flags for the TTClassescompiler macros to the Makefile. For Unix, add –D<flagname>; for Windows,add /D<flagname>.This section includes information about the following compiler macros:•TTEXCEPT: Throw C++ exceptions•USE_OLD_CPP_STREAMS: Use old C++ iostream code•TTDEBUG:Generate additional debugging and error checking logic•TT_64BIT: Use TTClasses with 64-bit TimesTenSee also “Platform-specific compiler macros” on page 12.TTEXCEPT: Throw C++ exceptionsCompile TTClasses with the -DTTEXCEPT flag to make TTClasses throw C++exceptions. All of the TTClasses demo programs assume that exceptions areturned on, and all TTClasses testing is done with exceptions turned on.If you use exceptions, put try/catch blocks around all TTClasses function callsand catch exceptions of type “TTStatus”.If you do not use exceptions, you must check the TTStatus::rc value after everyTTClasses function call (checking for != SQL_SUCCESS). See “TTStatus” onpage 15.USE_OLD_CPP_STREAMS: Use old C++ iostream codeThere are at least two major types of C++ streams, and they are not compatiblewith each other. Do not use both stream implementations inside a program.If your program uses old C++ streams (your code has #include <iostream.h>),then you must compile TTClasses with theCompiling TTClasses11-DUSE_OLD_CPP_STREAMS flag to be compatible with the rest of your programcode.If your program uses new C++ streams (your code has #include <iostream>),then you must not use this compiler macro.TTDEBUG:Generate additional debugging and errorchecking logicCompile TTClasses with -DTTDEBUG to generate extra debugging information.This extra information reduces performance slightly, so use this flag only indevelopment (not production) systems.TT_64BIT: Use TTClasses with 64-bit TimesTenCompile TTClasses with -DTT_64BIT if you are writing a 64-bit TimesTenapplication.Note that 64-bit TTClasses has been tested on AIX, HP-UX, Solaris, Red HatLinux, and Tru64.Platform-specific compiler macrosThe following compiler macros are specific to a particular platform or compilercombination. You should not have to specify these compiler macros manually.Their use is determined by the Makefile chosen by the “configure” program.GCCCompile TTClasses with the -DGCC flag when using gcc on any platform.HPUXCompile TTClasses with the -DHPUX flag when compiling on HP-UX.MERANTCompile TTClasses with the -DMERANT flag when using the Merant ODBCDriver Manager.12Oracle TimesTen In-Memory Database TTClasses Guide3 Class DescriptionsThis chapter contains descriptions of all classes in the external interface to TTClasses and brief descriptions of some of the internal TTClasses. It is divided into the following sections:•Commonly used TTClasses•System catalog classes•XLA classes•Internal classesClass Descriptions13Commonly used TTClassesThis section includes the following classes:•TTStatus•TTConnection•TTCmd•TTConnectionPool•TTGlobal (logging)14Oracle TimesTen In-Memory Database TTClasses GuideTTStatusThe TTStatus class is used by other classes in the TTClasses collection to report errors and warnings. You can think of TTStatus as a value-added C++ wrapper around the SQLError ODBC function.SubclassesTTStatus has the following subclasses:•TTError•TTWarningTTErrorTTError is a subclass of TTStatus and is used to encapsulate ODBC errors (return codes: SQL_ERROR, SQL_INV ALID_HANDLE).TTWarningTTWarning is a subclass of TTStatus and is used to encapsulate ODBC warnings (return code: SQL_SUCCESS_WITH_INFO).ODBC warnings are usually not as serious as ODBC errors and should be handled with different logic. Logging ODBC warnings to an application’s log is usually appropriate, but ODBC errors usually need to be programmatically handled.Public MembersMember Descriptionrc Return code from the failing ODBC call. Typical valuesfor this field are SQL_SUCCESS,SQL_SUCCESS_WITH_INFO, SQL_ERROR,SQL_NO_DATA_FOUND, andSQL_INV ALID_HANDLE.native_error TimesTen native error number (if any) for the failingODBC call.odbc_error ODBC error code for the failing ODBC call.err_msg ASCII printable error message for the failing ODBCcall.Class Descriptions15Public MethodsMethod Descriptionostream Prints errors to a stream.ostreamfriend ostream& operator<<(ostream&, TTStatus&)Example 3.1This method can be used to print the error to a stream.TTStatus stat;// ...cerr << "Error fetching data: " << stat << endl;UsageTTStatus objects are used in one of two different ways, depending on whether thelibrary was built with the TTEXCEPT preprocessor variable defined. DefiningTTEXCEPT is the default and recommended use of TTClasses.If the library was built with the TTEXCEPT preprocessor variable defined,TTStatus objects are thrown as exceptions whenever an error occurs. This allowsC++ applications to use {try/catch} in C++ to detect and recover from failure,resulting in very readable source code.Example 3.2This example shows how to use TTStatus with TTEXCEPT defined.try {cmd1.Prepare(&conn, "select * from foo", stat);cmd2.Prepare(&conn, "insert into foo values(?,?,?)",stat);cmd3.Prepare(&conn, "update foo set x = ? where y=?",stat);mit(stat);}catch (TTStatus st) {cerr << "Error preparing statements: " << st << endl;// Rollback, exit(), throw -- whatever is appropriate}If you build TTClasses without the TTEXCEPT preprocessor variable defined,TTStatus objects are returned by reference from most method calls. The callermust explicitly check for errors after each method call, as demonstrated in thenext example.Example 3.3This example shows how to use TTStatus without TTEXCEPT defined.16Oracle TimesTen In-Memory Database TTClasses GuideTTStatus stat;[...]cmd1.Prepare(&conn, "select * from foo", stat);if (stat.rc) {cerr << "Error preparing statement: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}cmd2.Prepare(&conn, "insert into foo values(?,?,?)",stat);if (stat.rc) {cerr << "Error preparing statement: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}cmd3.Prepare(&conn, "update foo set x = ? where y = ?",stat);if (stat.rc) {cerr << "Error preparing statement: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}mit(stat) ;if (stat.rc) {cerr << "Error in commit: " << stat << endl;// Rollback, exit(), throw -- whatever is appropriate}Note that with exceptions enabled, TTError objects are thrown for ODBC errors,and TTWarnings are thrown for ODBC warnings.Example 3.4This example illustrates how TTError and TTWarning relate to TTStatus. The two code fragments shown have identical behavior.// first code fragment: using TTStatustry {// some TTClasses method calls}catch (TTStatus st) {if (st.rc == SQL_SUCCESS_WITH_INFO) {cerr << "Warning encountered: " << st << endl;}else {cerr << "Error encountered: " << st << endl;}}// second code fragment: using TTError & TTWarningtry {// some TTClasses method calls}catch (TTWarning warn) {cerr << "Warning encountered: " << warn << endl; }catch (TTError err) {cerr << "Error encountered: " << st << endl;}TTConnectionThe TTConnection class encapsulates the concept of a connection to a TimesTen database. You can think of TTConnection as a value-added C++ wrapper around the ODBC HDBC handle.Public MembersNone.Public MethodsMethod DescriptionConnect Opens a new connection to a TimesTen datastore.Disconnect Closes a connection to a TimesTen data store. Rollback Rolls back changes made to the databasethrough this connection since the last call toCommit() or Rollback() methods. isConnected Returns true if the object is connected toTimesTen.getHdbc Returns the ODBC level “HDBC” associatedwith this connection. SetIsoReadCommitted Sets the transaction isolation level of theconnection to be TXN_READ_COMMITTED. SetIsoSerializable Sets the transaction isolation level of theconnection to be TXN_SERIALIZABLE. CheckpointBlocking Performs a blocking checkpoint operation onthe data store by calling the TimesTen built-inprocedure ttCkptBlocking. CheckpointNonBlocking Performs a “true fuzzy” checkpoint operationon the data store by calling the TimesTen built-in procedure ttCkpt.DurableCommit Performs a durable commit operation on thedata store.SetLockWait Sets the lock timeout interval for the connectionby calling the TimesTen built-in procedurettLockWait.Method DescriptionSetPrefetchCloseOn Turns on the TT_PREFETCH_CLOSEconnection option. This is useful for optimizingSELECT query performance for client/serverconnections to TimesTen.SetPrefetchCloseOff Turns off the TT_PREFETCH_CLOSEconnection option.SetPrefetchCount Turns off the TT_PREFETCH_CLOSEconnection option.SetAutocommitOff Sets AUTOCOMMIT off for the connection.SetAutoCommitOn Sets AUTOCOMMIT on for the connection.GetTTContext Returns the connection’s context value.Connectvoid Connect (const char* connStr, TTStatus&)Opens a new connection to a TimesTen data store. The connection stringspecified in the connStr parameter is used to create the connection.Example 3.5TTConnection conn;TTStatus stat;conn.Connect("DSN=mydsn", stat);// Now this connection can be used to interact with// TimesTenIf exceptions are enabled, a TTStatus object is thrown as an exception if an erroroccurs. If exceptions are disabled, the TTStatus& object passed as the lastparameter to the method contains information about errors upon return from themethod.Calling this method sometimes results in warnings that can often be safelyignored. The following logic is preferred when using ::Connect().try {conn.Connect(stat);}catch (TTWarning warn) {// warnings from ::Connect() are usually informationalcerr << ‘’Warning while connecting to TimesTen: ‘’<< warn << endl;}catch (TTError err) {// handle the error; this could be a serious problem。
利用TimesTen内存数据库搭建高可用性的电信IT系统
福
建 电
脑
21 0 2年第 6期
利用 T e e i s n内存数据库搭建高可用性的电信 I m T T系统
蔡 侠
(北京福 富软件 技 术股份 有 限公 司福 州分公 司 福 建 福 州 3 0 0 5 0 3)
【 摘 要 】 本 文 介 绍 了利 用 Tme e : i s n内存 数 据 库 来搭 建 具 备 高可 用性 的 I 系统 的典 型 T T 部 署 架构 , 并举例 进行 了详细 阐述 。 ‘ 【 关键词 】 :共 享 内存 ; 高可用性 ; 据库 ; 数 内存数 据库 ; i s e Tme n T
据 库 的部署 架构 如 图 1 示 从 架构 图 中可 以看 所
当备 用 内存 数据库 发生 故障 时 .数 据 在 主用
到 .应 用 系统 的数 据管 理单 元 由生 产 中心 以及灾 内存 数据 库上 发生 更新 时 .将 由主用 内存数 据 库 备 中心 构 成 . 备 中心 的数 据 通 过 R pi t n代 将数 据 复制 到灾 备 中心 内存 数据库 上 。在 备用 内 灾 el a o ci 理 从 生产 中心 复制而来 存数 据库 恢 复之 后 .将 自动 从主用 内存数 据库 追
失。
到灾备 中心 。 在整 个架 构 中 , 只有 主用 内存 数据 库 多 个 Tme e i s n节 点 之 间 有 A t e Sa d y 节点有 更 新数 据 的权 限 T cv — t b i n
当主 用 内存数 据库 发生 故障 时 .系统 由备 用 cvr 等 多种模 式可 以选择 。其 中 . ci — t d 内存 数据 库接 管 .原备用 内存 数据 库 变更 为 主用 oey A t e Sa . v n b - i s r eoey y D s t cvr 模式 为传 统 的 A t e Sa d 内存 数据 库 ( aeR cv— t 。 i n 该步 骤必 须在 原备用 内存 数 据库 中
Oracle times-ten帮助企业实现实时管理
Log Buffer Locks, Cursors, Compiled Commands, Temp Indexes Compiled Commands,
Data Tables, Data Tables, Indexes, System Tables System Tables
19
日志与数据持久性
TimesTen
TimesTen
In-Memory Database
In-Memory Database
Replication TimesTen to TimesTen
30
灵活的配置
复制 – TimesTen 到 TimesTen
§ 灵活的配置选择 § 复制表或者data-store
Active - Standby Active - Active (split workload) Propagation Active - Active (distributed workload) N – Way (update anywhere)
31
同步与异步复制
§ 异步复制
• • •
异步传送交易数据 非常快的应用响应时间 适合于需要高性能、低延迟的应用场景 同步传送交易数据 在返回控制权给应用之前,提交的交易能确保被传送到 远端节点 同步复制可以由应用系统在交易层面来进行控制“开启” 或“关闭”
§ 同步复制
• • •
32
更多功能…….
Subdaemon
(multi-threaded process)
Data Store
Log Files Log Files dsName.log0 dsName.log1
Checkpoint dsName.ds1 Checkpoint dsName.ds0
大数据新宠:内存数据库之Timesten评测
内存数据库之Timesten评测TimesTen是Oracle公司的数据库产品,其全称为Oracle TimesTen In-Memory Database。
TimesTen是一个内存优化的关系数据库(即内存数据库),它为应用程序提供了即时的响应性和非常高的吞吐量。
Oracle TimesTen In-Memory Database 可以作为单独的数据库使用,也可以作为高速缓存或嵌入式数据库被部署在应用程序层中,它利用标准的SQL接口对完全位于物理内存中的数据存储区进行操作。
TimesTen 起源于Hewlett Packard。
1992年,由HP 的一个研发小组开发了最早的核心技术,即TimesTen 的实时事件处理系统,目的是为了嵌入到HP 的电信系统中。
1996年TimesTen从HP剥离出来成为独立的公司;并于2005年6月被Oracle公司收购。
经过Oracle公司几年的整合,现在TimesTen已经与Oracle进行了很好的集成。
最显著的特点是TimesTen的Cache Group,能够实现内存数据库TimesTen与传统磁盘数据库Oracle 的互联互通。
在TimesTen的最新版本中,Oracle公司又对TimesTen产品在功能上进行Oracle化,加入了许多新的功能。
如OCI的支持,Cluster的功能等。
安装配置安装TimesTen之前,需要先从Oracle官方网站上下载TimesTen的安装包。
当前版本安装包是timesten112230.linux8664.tar.gz。
下载完成后,对压缩包进行解压缩:gzip timesten112230.linux8664.tar.gz|tar -xvf –解压缩后,得到linux8664目录。
TimesTen的安装文件就放在这个目录中。
在正式安装之前,需要进行一些准备工作,基本的有以下几个命令:创建TimesTen工作组:[root@localhost ~]# groupadd ttadmin创建TimsTen工作用户:[root@localhost ~]# useradd -G ttadmin tttest对相关目录更改权属:[root@localhost ~]# chown -R tttest:ttadmin /etc/TimesTen准备工作完成后,就可以转到之前解压缩后得到的linux8664目录下运行./setup.sh开始安装。
timesten内存数据库官方操作文档
<Insert Picture Here>Oracle TimesTen 基础&Tips日本甲骨文公司Oracle Direct Seminar<Insert Picture Here>Agenda• TimesTen 是什么?• 应用实例介绍 • TimesTen 的优势• TimesTen 基础• TimesTen 的结构 • TimesTen 的各种构成• 可选功能简介• Replication• Cache Connect to Oracle• TimesTen 的系统设计• Sizing• 系统维护管理• 附录关于测试数据的说明本讲座中将会使用一些测试数据来说明TimesTen的特 性。
对于这些测试数据,请注意以下几点。
1、根据测试环境的不同,会有一定的差异。
2、本讲座中的测试数据,仅在本讲座中使用。
严禁传 播和用于其他用途。
3、本讲座中提供的数据仅可作为参考,不可用于购买 TimesTen产品时的依据。
TimesTen是什么?• 名称:Oracle TimesTen InMemory Database • 目的:缩短数据库层的响应时间• 特点:• TimesTen是一个完整的数据库• 相关数据全部储存在计算机内存中• 算法的简化成就更少的CPU开销• 比Oracle 数据库的DB缓存更快应用实例介绍①:独立的数据库 • 应用于某电话服务器• 需求包括:• 高可用性(99.999%)• 地区性的容灾备份功能• 极短的响应时间• 易于部署• 可管理性• TimesTen成功地满足了所有的需求• 高性能• 移动解决方案• 可靠的数据库Replication应用实例介绍②:In Memory Database Cache• 系统描述:• 某信用卡消费监视系统 • 实时对消费记录进行分析• 性能需求:• 每秒10,000的更新、插入 • 每秒100,000的查询 • 响应时间小于1毫秒• 可扩展性需求:• 未来将达到每秒1~2M 查询 • 响应时间不变• 对应用程序的影响最小• 其它需求:• 负载平衡 • 防灾冗余 • 硬件成本• TimesTen的解决方案TimesTen 的优势• 高速数据处理• 微秒级别的响应时间• 采用标准技术• 支持大部分SQL92的功能, 包括索引,物化视图• 减少开发难度和开发时间 • 减少维护成本• 高可靠性• 足以满足证券行业等等业 务的高可靠性要求表示层应用程序TimesTen应用层数据库层Real Application Clusters与Oracle Database 互动Replication优势一:TimesTen 为什么这么快?• 因为数据全部保存在内存中?• 要是把Oracle DB 的数据全部保存到内存中 是不是也有这么快?• 因为数据处于应用程序层?• 要是把Oracle DB 也配置在应用程序层是不是也有这么快?NoNo No TimesTen 的数据都在内存中, 拥有更优化的算法和更少的CPU 开销,所以才这么快!优势一:TimesTen 为什么这么快? (续)CPU 开销的对比数据全部保存在内存中,这样的设计使得CPU 开销大幅下降TimesTen应用程序应用程序基于磁盘的RDBMS连接开销 多个进程 同时工作 的开销转换检索结果 造成的开销缓存管理 的开销复制缓存数据 的开销磁盘IO 的开销应用程序R DBM S 引擎 数据TimesTen Vs. Oracle Database 参考资料执行100%Select句的执行效率会话数 CPU占用率的比较执行100%Select句,30000TPS时的CPU占用率 执行70%Select句,15000TPS时的CPU占用率• 10倍以上的TPS以及更低的CPU占用率•CTC验证结果•TimesTen 7.0.5 / Oracle Database 11.1.0.6•DualCore×2•http://www.thinkit.co.jp/article/96/3/2.htmlDB 层AS 层应用程序 (J2EE etc)将Oracle 数据库的表或者表的一部分提取 出来,在应用程序服务器上建立 TimesTen 缓存Oracle TimesTen InMemory Database带来的高速应用程序开发应用程序 (J2EE etc)应用程序通过JDBC/ODBC 执行SQL 语句 高速访问Cache Connect to Oracle 使缓存与后台 数据库保持同步Replication 功能保证冗余和高可用性开发、维护成本大大降低开发、维护成本大大降低 “Cache Connect to Oracle”提供的同步功能高速的SQL 执行优势二:采用标准技术,简化开发和维护优势三:高可靠性• 高可靠性的保证:• 日志记录功能将数据保存到非易失存储器中• Oracle TimesTen Replication 提供的冗余和容灾功能维持各个Oracle TimesTen 的数据一致性应用程序数据库引擎 (ODBC/JDBC Driver )日志文件Data Store临时 空间日志 缓存<Insert Picture Here>Agenda• TimesTen 是什么?• 应用实例介绍 • TimesTen 的优势• TimesTen 基础• TimesTen 的结构 • TimesTen 的各种构成• 可选功能简介• Replication• Cache Connect to Oracle• TimesTen 的系统设计• Sizing• 系统维护管理• 附录TimesTen 的结构引擎 (ODBC/JDBC 驱动器)Daemon配置文件odbc.ini检查点文件 ds0检查点文件 ds1日志文件Data Store临时 数据日志缓存Sub Daemon应用程序后台进程内存结构文件结构可选进程TimesTen引擎• 动态链接程序库(Link Library) • 功能包括:• 执行SQL语句并返回执行结果• 往日志缓存中写入日志内存结构• Data Store• 保存所有数据库数据的区域• 日志缓存• 用于暂时存储记录Data Store变更的日志 • 临时数据区域• 临时存储执行计划等数据的共享区域• 排序等等操作临时使用• 主进程(Daemon)• 监听功能(Listener)• 读取配置文件odbc.ini• 分配和监视Sub Daemon • 子进程(Sub Daemon)• 载入/卸载Data Store• 将日志缓存写入日志文件• 监视和解除死锁(Dead Lock)• 执行检查点(Checkpoint)• Replication代理• 实施Replication• Cache代理• 实施Cache Connect• TimesTen服务器• 采用客户端/服务器连接时的服务器进程文件结构• 配置文件odbc.ini• 用于记录各个DSN的参数• 检查点(Checkpoint)文件• 保存于磁盘的数据库镜像。
Oracle从入门到精通-经典资料
用于存储从磁盘数据文件中读入的数据,所有用户共享。 服务器进程将读入的数据保存在数据缓冲区中,当后续的请求需要这些数
据时可以在内存中找到,不需要再从磁盘读取,提高了读取速度。 数据缓冲区的大小对数据库的读取速度有直接的影响。
日志缓冲区
日志记录数据库的所有修改信息,日志信息首先产生于日志缓冲区。 当日志缓冲区的日志数据达到一定数量时,由后台进程将日志数据写入日
5
Oracle 数据库简介 2-2
Oracle数据库基于客户端/服务器技术
网络
请求
服务器
响应
数据库服务器对数据库表进行最佳管理,处理多个客户端对 客同户一端数应据用的程并序发通 访过 问向 。服 全务 面器 地请 保求 持并 数接 据收 完信 整息 性的 ,方并式控与制数数据据
库进行交互库。访它问充权当限用等户安与全数性据需库求之间的接口
Oracle 客户端
Oracle 服务器
tnsnames.ora
25
listener.ora
Oracle 网络配置 2-2
服务器端监听器配置信息包括监听协议、地址及 其他相关信息。 配置信息保存在名为listener.ora 的文件中。在安装服务器软件时自动配置一个监 听器
客户端的网络服务名配置信息包括服务器地址、 监听端口号和数据库SID等,与服务器的监听器 建立连接。配置信息保存在名为tnsnames.ora的 文件中
目标
4
Oracle 数据库简介 2-1
对象关系型的数据库管理系统 (ORDBMS) 在管理信息系统、企业数据处理、因特网及电子
商务等领域使用非常广泛 在数据安全性与数据完整性控制方面性能优越 跨操作系统、跨硬件平台的数据互操作能力
TimesTen介绍
<Insert Picture Here>TimesTen内存数据库 内存数据库TimesTen内存数据库的背景 内存数据库的背景• 1992 --在HP美国总部, 第一个对于内存数据库的实验室, 主要研究内 存数据库技术在电信网络中的应用 • 1996 – TimesTen从HP实验室分离出来, 成立了一家独立的内存数据 库公司• 公司中的核心成员都从HP实验室来 • 同时发布了第一个内存数据库的商用版本(TimesTen 2.0)• 1999 – Timesten 在欧洲开业, 设在伦敦 • 2001 – Cache Connect capability released • 2005 – Oracle 收购了Timesten• 推出主要的商用版本 (TimesTen 6.0) • 过去三年每年有30%以上的增长率 • 庞大的客户, 超过1500 企业级的用户• 2007 – Timesten 新版本 7.0 正式推出TimesTen 高性能技术针对物理内存而特别设计优化的数据库• 所有数据存于物理内存• 针对物理内存而特别设计优化的数据 存储结构与算法NetworkApplication• 采用关系型数据模型 • 标准 APIs (ODBC, JDBC, SQL92)TimesTen libraries...ApplicationTimesTen librariesClientServerIn-Memory Database(s)Transaction Logs Checkpoint filesApplication-Tier Platform闪电般的响应速度TimesTen In-Memory Database 6.0, 4-CPU, 3 GHz x86 Xeon, 32-bit RHLinux30microseconds2028 millionths of a second1025 millionths of a second 9 millionths0 update mixed70% select; 20% update; 10% insertselect极高的处理能力Oracle TimesTen 6.0, 4-CPU, 3 GHz x86 Xeon, 32-bit RHLinuxTransactions per second300,000250,550250,000 200,000 150,000 100,000 50,000 032,6631 CPU 2 CPUs 4 CPUs121,70598,56870,11154,303updatemixed70% select; 20% update; 10% insertselect响应时间及吞吐量的比较内存数据库与磁盘数据库的比较数据库特性 目标应用 数据模型 优化 典型部署方式 架构 响应时间 数据容量 可扩展性 Oracle 10g 关键业务应用 关系型 - SQL Database Oracle TimesTen In-Memory Database 关键业务应用 关系型 - SQL磁盘为中心 数据库层 客户机/服务器 毫秒到秒级TB到PB级 Cluster (RAC) & SMP内存为中心 应用层 嵌入式(直接数据访问) 嵌入式(直接数据访问) 微秒到毫秒级GB级 SMPOracle TimesTen支持 实时世界 支持“实时世界 支持 实时世界”全球有超过1500家企业客户采用Oracle TimesTen内存数据库解决方案In NetworksIn TelecomOn Wall StreetIn the Enterprise呼叫处理 呈现业务 定位服务 软交换 一键通话( 一键通话(PTT) )实时计费 欠费分析 认证鉴权 网络/QoS管理 管理 网络 自服务门户订单匹配 智能订单路由 成交撮合 实时分析呼叫中心 用户个性化在线 实时订座 实时物流 BI / BAM SOATimesTen 无数据丢失技术日志与数据持久性Memory-resident Data Store• Transaction log manager 来协调 大量事务吞吐 • 内存缓冲区交易日志与同步交易 日志 • 交易日志与检查点文件保存在磁 盘之上 • 交易日志与检查点文件保障数据 可恢复ApplicationsUpdatesCommitted TransactionsTransaction Log Memory BufferBackground Log flusher persists transaction data to diskPeriodic snapshot of data store to checkpoint files1 Transaction Log files2Checkpoint files与Oracle数据库的无缝连接 数据库的无缝连接 Cache 选件Cache Connect to Oracle• 缓存Oracle数据库的数据 • 只读或可更新的缓存 • 双向更新 • 在一个Oracle数据库上可以 建立多个缓存实例NetworkApplication Program Application ProgramTimesTenTimesTenIn-Memory DatabaseIn-Memory DatabaseCache Connect to OracleOracleCache Group 定义需要被缓存到 TimesTen data store里 Cache Group 的Oracle数据库的数据集合,称之为缓 存组(Cache Group)。
DTCC2014:TimesTen内存数据库— 架构扩展应用实践_IT168文库
子系统1
统应该是相对比较独立的,子系统 之间关联较少,而且相互关联的子
字体数量相对较少。
实际情况
子系统2
实际情况往往是大相径庭的,子系 统之间存在很高的耦合性。子系统
子系统5
内读写错综复杂,基本上不可能实 子系统4
现读写分离。 面对这样的现实,出于成本和风险
子系统1
子系统3
的考虑,很难做到子系统的解耦,
视子进程。
子进程(Sub Daemon): 载入/卸载Data Store;将日志缓存写入日志文件;监视 和解除死锁;执行检查点。
Timesten
TimesTen的Cache Group选择
1. 每隔一定时间,缓存代理将数据复制到TimesTen中; 2. 适合用于储存几乎没有更新的数据;
3. 能保证单一数据库源的写入,能更好控制数据一致性,重点推荐。 1. 异步写入,DML被抛给Oracle,不等待Oracle完成COMMIT;
TimesTen中,表和索引均保存在内存中,容量
(内存)估算很重要,单库尽可能控制在 50~60GB,不超过100GB。 表字段不宜过多,字段不宜过长,TimesTen存 储具有字段对齐的特点,比Oracle需要更多的 存储空间,尽可能不超过128字节。
目录
架构现状
TimesTen
个性定制 应用效果 其他
②
① 应用COMMIT提交; ② 立刻返回应用COMMIT提交成 功; ③ 通过日志缓存写入日志文件; ④ 将更新信息发送给Replication
Rep Agent
④ ⑤
③
LogFile
Agent;
⑤ 将更新信息从Active发生到
LogFile
TimesTen安装配置-Oracle 内存数据库
因为工作的需要,我编写了一份timesten的安装文档。
安装环境是RedHat AS5 64位的操作系统。
1、用 root 登录系统2、在 /etc/sysctl.conf 文件后追加一些配置, vi /etc/sysctl.conf保存退出3、修改 limit 配置4、重启机器5、建用户6、用 passwd 命令修改 timesten 用户的口令为 timesten7、切换成 timesten 用户8、把 tt70install.tar.gz 放到 /timesten 目录下9、解压 tt70install.tar.gz10、安装 timesten11、选择产品是 64 位,还是 32 位,出现如下提示:选择安装 64 位 Linux 版本,确认回车12、确认 timesten 实例名,出现如下提示默认选择 timesten 的 instance 名字,直接回车,提示:默认回车13、选择安装产品,出现如下提示选择安装“ Oracle TimesTen In-Memory Database with Cache Connect to Oracle ”,输入 2 ,确认回车14、选择安装组件,出现如下提示选择安装“ Client/Server and Data Manager ”,默认确认回车15、选择安装 timesten 的目录,出现如下提示选择 /timesten ,确认回车16、选择创建守护进程的主目录,出现如下提示默认回车,出现如下提示:提示目录不存在是否创建,默认选择 yes ,确认回车。
开始解压安装,提示如下17、解压结束后,安装 Demo 程序,出现如下提示默认回车确认,提示如下:18、选择 timesten 守护进程的端口,出现如下提示默认选择 17001 端口,确认端口没有被占用[1] ,确认方法见脚注。
如果 17001 端口没有被占用的话,则默认回车确认,如果被占用,则输入 no ,回车,出现如下提示输入一个没有被占用的端口,回车确认。
Oracle TimesTen In-Memory Database 访问性指南 Release 2
Oracle® TimesTen In-Memory DatabaseAccessibility GuideRelease 22.1F35409-02May 2022Accessibility GuideThis document provides accessibility information for TimesTen. The information hereapplies to Oracle TimesTen In-Memory Database, Oracle TimesTen Application-TierDatabase Cache, and Oracle TimesTen In-Memory Database Express Edition(TimesTen XE).This document contains the following section:•Accessibility in TimesTenAccessibility in TimesTenThis section covers these topics:•TimesTen products and user interfaces•Accessibility modes for TimesTen•Accessibility keyboard shortcuts for TimesTen•Accessibility of documents generated with the Javadoc generator•Accessibility of HTML files created by the ttStats utilityTimesTen products and user interfacesOracle TimesTen includes TimesTen Classic, TimesTen Scaleout, and TimesTenCache. You can interact with these using a command-line interface or using graphicaluser interfaces offered through Oracle SQL Developer and Oracle Enterprise Manager.Command-line interfaces are accessible through the use of screen readers. For moreinformation on accessibility in Oracle SQL Developer or Oracle Enterprise Manager,refer to the accessibility documentation of those products.Accessibility modes for TimesTenTimesTen currently does not offer any accessibility modes for any of its products offerings. However, most of the TimesTen interfaces work through a command-line interface which is accessible through the use of a screen reader. Accessibility keyboard shortcuts for TimesTenTimesTen currently does not offer any accessibility keyboard shortcuts for any of its products offerings.Accessibility of documents generated with the Javadoc generatorThe Oracle TimesTen In-Memory Database JDBC Extensions Java API Reference and Oracle TimesTen In-Memory Database JMS/XLA Java API Reference that are part of this library are generated with the 1.8.0_291 Java Documentation (Javadoc) Generator.Be aware of these accessibility issues with the TimesTen Javadoc documents:•They do not include row headers for accessibility, violating Web Content Accessibility Guidelines criterion 1.3.1. Reference these bugs:Bug 24300058 - Tables in Javadoc documentation missing row headersBug 33867968 - Upgrade to version 1.9 of Javadoc tool•Use of the the Oracle Accessibility Toolbar (OATB) Reflow tool results in a horizontal scroll bar and potential loss of information, violating Web ContentAccessibility Guidelines criterion 1.4.10. Reference this bug:Bug 33876782 - OATB Reflow tool: horizontal scroll bar on TimesTen JavadocAccessibility of HTML files created by the ttStats utilityThe ttStats utility creates HTML reports that are accessible and readable by screen readers.Documentation AccessibilityFor information about Oracle's commitment to accessibility, visit the Oracle Accessibility Program website at /pls/topic/lookup?ctx=acc&id=docacc.Access to Oracle SupportOracle customers that have purchased support have access to electronic support through My Oracle Support. For information, visit /pls/topic/ lookup?ctx=acc&id=info or visit /pls/topic/lookup?ctx=acc&id=trs if you are hearing impaired.Oracle TimesTen In-Memory Database Accessibility Guide, Release 22.1F35409-02Copyright © 2020, 2022, Oracle and/or its affiliates.This software and related documentation are provided under a license agreement containing restrictions on use and disclosure and are protected by intellectual property laws. Except as expressly permitted in your license agreement or allowed by law, you may not use, copy, reproduce, translate, broadcast, modify, license, transmit, distribute, exhibit, perform, publish, or display any part, in any form, or by any means. Reverse engineering, disassembly, or decompilation of this software, unless required by law for interoperability, is prohibited.The information contained herein is subject to change without notice and is not warranted to be error-free. If you find any errors, please report them to us in writing.If this is software or related documentation that is delivered to the U.S. Government or anyone licensing it on behalf of the U.S. Government, then the following notice is applicable:U.S. GOVERNMENT END USERS: Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs) and Oracle computer documentation or other Oracle data delivered to or accessed by U.S. Government end users are "commercial computer software" or "commercial computer software documentation" pursuant to the applicable Federal Acquisition Regulation and agency-specific supplemental regulations. As such, the use, reproduction, duplication, release, display, disclosure, modification, preparation of derivative works, and/or adaptation of i) Oracle programs (including any operating system, integrated software, any programs embedded, installed or activated on delivered hardware, and modifications of such programs), ii) Oracle computer documentation and/or iii) other Oracle data, is subject to the rights and limitations specified in the license contained in the applicable contract. The terms governing the U.S. Government’s use of Oracle cloud services are defined by the applicable contract for such services. No other rights are granted to the U.S. Government.This software or hardware is developed for general use in a variety of information management applications. It is not developed or intended for use in any inherently dangerous applications, including applications that may create a risk of personal injury. If you use this software or hardware in dangerous applications, then you shall be responsible to take all appropriate fail-safe, backup, redundancy, and other measures to ensure its safe use. Oracle Corporation and its affiliates disclaim any liability for any damages caused by use of this software or hardware in dangerous applications.Oracle, Java, and MySQL are registered trademarks of Oracle and/or its affiliates. Other names may be trademarks of their respective owners.Intel and Intel Inside are trademarks or registered trademarks of Intel Corporation. All SPARC trademarks are used under license and are trademarks or registered trademarks of SPARC International, Inc. AMD, Epyc, and the AMD logo are trademarks or registered trademarks of Advanced Micro Devices. UNIX is a registered trademark of The Open Group.This software or hardware and documentation may provide access to or information about content, products, and services from third parties. Oracle Corporation and its affiliates are not responsible for and expressly disclaim all warranties of any kind with respect to third-party content, products, and services unless otherwise set forth in an applicable agreement between you and Oracle. Oracle Corporation and its affiliates will not be responsible for any loss, costs, or damages incurred due to your access to or use of third-party content, products, or services, except as set forth in an applicable agreement between you and Oracle.。
oracle实训报告
目录一、实践名称 ................................................... - 1 -二、实践题目 ................................................... - 1 -三、实践目的 ................................................... - 1 -四、实践内容与结果 ............................................. - 1 -第一部分 Oracle数据库的操作................................ - 1 - 第二部分 oracle数据库连接................................. - 26 - 第三部分建立oracle数据库应用系统--学生成绩管理系统........ - 28 - 五、实践小结 .................................................. - 34 -一、实践名称Oracle数据库开发二、实践题目(1)Oracle数据库的操作(2)Visual Basic访问Oracle数据库(3)建立一个oracle数据库应用系统---学生成绩管理系统三、实践目的Oracle数据库开发是信息管理与信息系统专业和相关专业本科生的一门实践课。
它的主要任务是在学生已经学过数据库原理与应用的基础上,通过教师的少而精的讲课和逐梯次的大量实际训练,使学生初步掌握数据库管理系统Oracle的基本原理和基本操作,能够运用数据库技术设计Oracle数据库及其应用系统。
学生实践后,应达到:(1)初步掌握Oracle关系数据库语言(2)掌握 Oracle的操作与使用(3)数据库的建立与管理、数据表的建立与操作等(4)PL/SQL语言的使用与编程(5)设计和开发一个小型数据库应用系统四、实践内容与结果第一部分Oracle数据库的操作(1)实践操作1熟悉Oracle运行环境和主要管理工具1.登录到存储管理器中,查看表空间和回滚段中的情况。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Oracle TimesTen TM内存数据库6.0版推荐编程实践性能和稳定性最佳的TimesTen应用程序的设计方法内存数据库版权© 1996、2005归Oracle公司所有。
未经允许不得以任何方式和手段进行复制和使用。
附带的和光盘上的软件和文档(不管是硬拷贝形式还是电子形式)的使用和披露均应依据本许可协议。
被许可方可印刷存储在光盘上的文档,但仅限内部使用。
除上面提到的以外,未经TimesTen公司事先书面许可,不得以任何电子或机械形式或手段,包括影印、录制或通过任何信息存储和检索系统,复制或传播本文档的任何部分(不管是硬拷贝形式还是电子形式)。
Oracle、JD Edwards、PeopleSoft、Retek、TimesTen、TimesTen标志、MicroLogging和Direct Data Access是 Oracle公司和/或其子公司的商标或注册商标。
其他名称可能是其各自所有者的商标。
程序(包括软件和文档)包含专有信息;是依据一份包含了使用和披露限制条款的许可协议而提供的,并受版权、专利其他知识产权和工业产权法的保护。
除非法律有明确规定,或是为实现与其他独立开发的软件间的互操作性,否则不得对软件程序进行反向工程、反汇编或反编译。
本文所含信息如有变动,恕不另行通知。
如果您在本文中发现任何错误,请书面通知我们。
我们不保证本文没有错误。
除非在您的许可协议中对此有明确许可,否则不得为任何目的,以任何电子或机械形式或手段复制或传播这些程序的任何部分。
2005年8月19日在美国印刷。
目录1 概述TimesTen文档参考索引 (1)术语 (1)“TimesTen应用程序”或“直连应用程序” (1)“TimesTen客户机/服务器应用程序” (2)install_dir (2)C++用户:考虑使用TTClasses (2)2 实现最佳性能TimesTen文档中的性能信息 (4)有关最常见问题的(影响性能的因素)建议 (4)运行对性能要求高的直连应用程序 (4)预先准备好所有SQL语句 (5)控制磁盘写频率 (6)为查询创建合适的索引 (6)使用“showplan”验证是否使用了合适的索引来进行查询 (8)关闭自动提交(autocommit)并定期提交 (9)C/C++ (ODBC)与Java (JDBC)性能比较 (9)通过在加载数据之后创建索引来加速(大批量)数据加载 (10)使用TTClasses,避免使用OLEDB 、ADO和第三方中间件 (10)多CPU性能调优 (10)使用连接池 (11)最大限度地提高数据库的并发性 (11)及时关闭只读游标 (11)避免大批量的删除语句 (11)考虑使用 “DELETE FIRST NumRows” (12)缩短不必要的长期运行的事务 (12)3 最大限度地提高稳定性最大限度地提高稳定性 (13)TimesTen文档 (13)TimesTen架构和数据库恢复简明指南 (13)避免应用程序的意外失败 (14)必须断开TimesTen应用程序与数据库的连接 (14)避免对TimesTen应用程序使用“kill –9”命令 (14)备份 (14)检查点 (15)其他好的实践 (15)检查所有ODBC函数的返回码,然后处理它们 (15)处理数据库失效错误 (16)处理死锁和锁超时错误 (16)从一个已满磁盘恢复 (17)4 复制和XLA复制 (18)将DSN名用作文件名前缀 (18)在进行–duplicate操作之前执行两个检查点操作 (19)复制配置应(手动)指定端口号 (19)监控复制 (20)SEQUENCE与复制和故障恢复的相互影响 (21)XLA (21)使用持久性XLA (21)始终监控XLA (22)最大限度地提高XLA性能 (22)索引1 概述本文详细介绍了如何利用TimesTen开发具有最佳性能和强健性的应用程序。
TimesTen文档参考索引下表列出了本文引用的章节,以及它们在TimesTen 6.0文档中的位置。
TimesTen内置程序: tt_ref.pdf性能调优:C_dev.pdf; java_dev.pdfTimesTen查询优化器:operations.pdf事务管理与恢复:operations.pdf警告与错误:tt_ref.pdfTimesTen实用程序: tt_ref.pdfTTClasses: ttclasses.pdf术语下面是本文所使用的一些术语及其含意。
“TimesTen应用程序”或“直连应用程序”本术语指一个直接连接到TimesTen数据库的应用程序。
C和C++应用程序显式地连接到下列共享库之一:libtten.so (Solaris、Linux)libtten.sl (HP-UX)tten60.lib (Windows)等等以“直连”模式使用TimesTen的 Java应用程序以“jdbc:TimesTen:direct:...”的形式连接数据源。
这些应用程序与它们所访问的TimesTen数据库驻留在同一台机器上。
这样一来,再通过使用“直连” TimesTen驱动程序,TimesTen应用程序将可获得最佳性能。
“TimesTen客户机/服务器应用程序”该术语指一个使用TimesTen客户机/服务器接口来与数据库连接的应用程序——即显式地连接到共享库中libttclient.so (Solaris、Linux)libttclient.sl (HP-UX)ttcl60.lib (Windows)等等以客户机/服务器模式使用TimesTen的 Java应用程序以“jdbc:TimesTen:client:...”的形式连接数据源客户机/服务器应用程序可与TimesTen数据库驻留在同一台机器上,也可驻留在其他机器上。
客户机/服务器应用程序的运行速度要比直连应用程序慢很多。
无论是直连应用程序还是客户机/服务器应用程序,提供给它们的API和功能都是一样的。
install_dir这是TimesTen的安装路径。
参考Oracle《TimesTen内存数据库安装指南》了解更多信息。
默认路径为:/opt/TimesTen/InstanceName (UNIX; 根用户安装的实例)$HOME/TimesTen/InstanceName(UNIX;非根用户安装的实例)C:\TimesTen\tt60 (Windows)注意:基于安全的考虑,我们推荐,如果可能的话,以非根用户的身份安装TimesTen。
C++用户:考虑使用TTClassesTimesTen C++接口类,即TTClasses,编写它的目的是提供易用、高性能的TimesTen接口。
C++类库为大多数常见的ODBC功能提供了“封装”,包括SQL查询执行、事件通知(XLA)和系统目录信息。
此外,TTClasses的设计采用了许多本文推荐的实践。
TTClasses类包含在TimesTen内存数据库中。
与TimesTen一起提供的还有一些有用的示例应用程序,用于演示如何使用TTClasses类。
在示例程序中包含如下一些程序:示范如何监视和管理TimesTen数据库;如何使用TimesTen的XLA实施一个事件通知程序;如何估计数据库的大小;以及如何管理XLA书签。
2 实现最佳性能本章重点讨论如何编写具有最佳性能的TimesTen应用程序。
TimesTen文档中的性能信息现有的TimesTen文档是学习关于如何调优应用程序性能的基础知识的首选资源。
在阅读本章其余部分之前,请务必认真阅读TimesTen文档“性能调优”这一章。
有关最常见问题的(影响性能的因素)建议本章的其余部分将讲述那些客户经常遇到的问题。
请注意,这些问题在TimesTen文档中也有所描述。
运行对性能要求高的直连应用程序通过使用TimesTen的“直连” ODBC和JDBC驱动程序,并在数据库所在的机器上运行应用程序,就很容易实现TimesTen的最佳性能。
其他机器上的应用程序可通过客户机/服务器模式访问TimesTen数据库,但网络流量负载将极大地降低性能。
通过利用TimesTen的Replication和Cache Connect to Oracle技术,通常可以在本地访问数据,而不会产生客户机/服务器模式的流量负载。
注意:TimesTen采用客户机/服务器架构模式运行虽然不如采用直接内存模式运行得快,但它还是很快的。
TimesTen客户机/服务器应用程序比连接到传统的客户机/服务器数据库的应用程序性能高;尤其是,与传统的数据库相比,TimesTen具有更高的吞吐能力。
在下面这些情况下,应考虑以客户机/服务器模式连接TimesTen数据库。
1) 应用程序运行在一台主机上,TimesTen数据库驻留在另一台主机上。
2) 一个32位的客户端应用程序必须连接到64位的TimesTen数据库,并且32位的客户端应用程序无法重新编译为64位。
如果应用程序与TimesTen数据库在同一台机器上,或能够被重新部署到该机器上,但是不能被重新编译为64位模式,TimesTen建议采用TimesTen共享内存进程间通信(SHMIPC)。
对于客户机/服务器模式的数据库连接而言,与TCP/IP 连接相比,SHMIPC 大幅提高了性能。
需要有大量TimesTen客户机/服务器连接的系统设计应考虑到每一数据库连接均都会消耗服务器主机的操作系统资源。
在服务器主机的规模设置和操作系统调优过程中应考虑这一因素。
预先准备好所有SQL语句为实现最佳性能,应预先准备好那些执行不止一次的SQL语句。
这一准则适用于所有关系数据库;但是对于TimesTen及其极高的事务处理速度来说,编译一条语句所耗费的时间实际上要比执行该语句所花的时间多好几倍;因此,未预先准备好语句的应用程序将使TimesTen的性能大打折扣。
除了要预先准备好语句,那些语句的输入参数和输出列也应预先绑定。
欲了解有关语句准备的更多信息,请参考TimesTen文档“性能调优”一章标题为“预先准备语句”部分。
ODBC用户使用SQLPrepare函数预先准备语句。
TTClasses用户使用TTCmd::Prepare()方法预先准备语句。
JDBC用户使用PreparedStatement类预先准备语句。
TimesTen查询优化器十分擅长选择最优的查询计划;然而,为了选择最优计划,它需要获得复杂查询所涉及到的表的更多信息。
就查询优化器选择最优查询计划来说,数据库统计信息对其是很有帮助的。
通过了解表的行数和列值数据分布,优化器更有可能选择出一个高效的表查询计划。
因此,通常一个好的做法是,在准备访问那些表的查询语句之前,先更新数据库中所有表的统计信息。