Welcome to TechWave 2006 SQL Anywhere Technical Summit Tracks 1 and 2

Welcome to TechWave 2006
SQL Anywhere Technical Summit
Tracks 1 and 2
Monday, August 7, 2006
Tuesday August 8, 2006
iAnywhere at TechWave 2006
 Tech Support at TechWave 2006
• Meet with technical experts from Sybase iAnywhere and TeamSybase
• Bring your technical questions and get answers on the spot!
• Located off the Exhibit Hall on the fourth floor, Palace Ballroom Foyer
 Ask the iAnywhere Experts
• Drop in during support hours to have your questions answered by experts!
• Appointments are available to speak one-on-one with Senior Engineers
• Located across from the Tech Support area
 TechWave-To-Go AvantGo Channel on your handheld device
• Download the TechWave AvantGo channel for up-to-date details on
sessions, events, maps and more
• www.ianywhere.com/techwavetogo
• Visit the AvantGo Kiosk on the 3rd floor
2
iAnywhere at TechWave 2006
 Don’t miss the Feedback & Futures Session
• Tuesday, August 8th 4:30 pm – 6:00 pm
• Join us to wrap up of all summit sessions and provide feedback
• Save your questions for dedicated time with all session presenters
• Giveaways, prizes and more – your survey is your ballot!
 Tuesday Night Event 8:00 – 10:00pm
• Exclusive party for all 2-day Summit attendees
• Pick up your ticket at the AvantGo Kiosk or the Feedback session
• Must have your ticket + TechWave badge to enter the party
3
iAnywhere at TechWave 2006
 Reference Program
• Share your vision and innovation with your peers
• Come by the Information Desk at the Sybase booth to complete a
survey form -- all submissions will receive a gift!
 iAnywhere Developer Community
A one-stop source for technical information!
• Access to newsgroups, new betas and code samples
• Technical whitepapers, tips and online product documentation
• Excellent resources for commonly asked questions
• All available express bug fixes and patches
• Network with thousands of industry experts
http://www.ianywhere.com/developer
4
SQL Anywhere 10
Dave Neudoerffer
VP Engineering, Sybase iAnywhere
Dave.neudoerffer@ianywhere.com
Monday, August 7, 2006
1:00 pm – 2:30 pm
Agenda
 SQL Anywhere 10 Enhancements
•
•
•
•
Performance
Protection
Productivity
Innovative Data Movement
 Release Notes
6
The Data Explosion in
Frontline Environments
• The landscape for where data is managed is changing…
–
–
–
–
Enterprises are becoming more distributed, with global workforces
Small & medium-sized enterprises are more sophisticated users of IT
Large enterprises are increasingly mobilizing their workforces
Software implementation and management is increasingly outsourced
Packaged applications, hosting, 3rd party development
• Front lines evolving into a mission-critical computing environment
–
–
–
–
Server applications installed in an ISV’s customer sites
Workgroup applications installed in retail outlets, remote offices
ISV applications with databases hidden under the covers
Mobile applications used by field workers and sales forces
7
At the Frontlines – Scenarios
Desktop
Server

Small & Medium Enterprise
• Accounting
• Administration

Solution packages
• Phone systems
• Point of sale

Remote office
• Store management
• Inventory control

Mobile
• Traveling sales
• Field service worker
• Inspector
…
Remote office
Mobile environments
8
SQL Anywhere is Unique
 Built from inception to enable front line applications
• Customers with server, desktop, mobile, remote office
applications
 Over 15 years of engineering of data management
technologies for frontline environments
• Running on laptops and desktops while other enterprise DBs
were running in large data centers
• First synchronization solution for mobile environments
 Focus on making applications just as reliable, secure and
available as those running in an enterprise HQ
9
SQL Anywhere 10 Components
SQL Anywhere
Self-managing relational database with high reliability, high performance out
of the box, small footprint, and a full range of SQL features across a variety
of platforms.
UltraLite
Database system for small devices, including Palm OS, Pocket PC, and
Symbian, providing full transaction-processing support, a choice of
development models, and synchronization with enterprise data stores.
MobiLink
Synchronization technology for sharing information among relational
databases while maintaining the integrity of transactions across the entire
system.
QAnywhere
Application-to-application messaging solution that delivers secure and
assured message delivery for distributed and mobile users.
10
SQL Anywhere 10 Components
SQL Remote
Synchronization technology for synchronizing ASA remotes with ASA consolidated
databases. Message based – direct connection not required.
Sybase Central
Management tool for ASA, UltraLite, MobiLink and SQL Remote. Uses a tree structure for
easy manipulation and management of objects. Also includes a built-in stored procedure
debugger.
PowerDesigner
Physical data modeller allows complete design of database schemas. It also provides
facilities to reverse engineer the schema of an existing database and to generate SQL to
create any schema you design.
Infomaker
A powerful and easy-to-use reporting tool that lets you query databases and create
sophisticated and effective custom reports of data.
DataWindow.NET
Powerful control/component for .NET environments providing flexible broad range of data
capabilities.
11
SQL Anywhere 10
 Over 200 enhancements to both the Database Server and Database
Synchronization components in 4 significant areas
• Performance – Equipping customers to deal with data explosion
– Pushing SQL Anywhere to 100’s of gig’s and 1000’s of users
• Protection – Consequences of data loss are increasing
– Push data protection, by theft or system failure, to higher levels
• Productivity – Increasing developer productivity, improving ROI
– New tools and enhancements for development, analysis and debugging
• Innovative Data Movement - address increasing volume of data being
exchanged with larger numbers of systems
– New architecture design, integration and mobile Web Services tools
12
Agenda
 SQL Anywhere 10 Enhancements
•
•
•
•
Performance
Protection
Productivity
Innovative Data Movement
 Release Notes
13
Enhanced Data Management
Performance - customers better equipped to deal with an
explosion of data in frontline environments
•
•
•
•
•
•
•
Materialized views
Snapshot isolation
Intra-query parallelism
Parallel backups
New Index design
New Storage format
Column Compression
•
•
•
•
•
Checkpoint write behind
Expressions
Java VM
New Catalog
Random access to BLOBs
14
Materialized Views
Functionality
Benefits
 Result of view stored as ordinary
base table in database
 Read-only
 Can build indices on it
 Can control frequency of refresh
 Used in optimization
 Enhanced query performance
 Improved concurrency
Usage Scenarios




When using large databases
Expensive queries on devices with limited processing power
When frequent queries result in repetitive aggregation (summing of data)
When access to up-to-the-moment data is not a requirement
15
Snapshot Isolation
Functionality
Benefits


Mechanism to eliminate “blocking”
of other readers when locks held
Keeps copy of original data while
it’s being changed for users who
want to read it in the interim
Also known as row versioning
Enabled by global database option
Can list currently active snapshots





Reduced locking
 Readers don’t block readers
 Readers don’t block writers
 Writers don’t block readers
 Better performance
Ensure consistency in reporting
applications
Usage Scenarios

Cases where query “locks” are being held for long periods of time and
preventing completion of query results for other users (blocking)
 Long running batch jobs / reports while user queries being issued
 Ex. Accounting Balance Sheet report
 Statistical queries that “touch” a lot of rows
 Stored procedures or logic holding transactions open for longer periods
16
Intra-query Parallelism
Functionality

Use of multiple processors or cores for
a single query

Parallel sequential scans, index
scans, joins

NOTE: Do not confuse with inter-query
parallelism (supported since SQL
Anywhere V6) which allows multiple
queries to execute in parallel
Benefits


Can speed up CPU-bound queries
Single client apps can benefit since
server can exploit more than one CPU
for each request
Usage Scenarios


By default, engine automatically uses for benefit
Option available to control its usage
17
Parallel Backups
Functionality
Benefits

 Decreases overall time required for
backups
 Only bound by performance of
slowest I/O component
Supported through server-side
image backups, dbbackup utility,
db_backup function
Independent I/O operations may
be overlapped with each other (vs.
performed sequentially)

Usage Scenarios


Especially useful for larger databases
Internal tests showed up to 3-fold improvement in performance on 10GB
database
18
Indexing Enhancements
Functionality
Benefits
 New indexes (to support snapshot
isolation)
 Improved control over how indexes
are created
 Improvements to storing and
tracking index information
 Reduced contention on inserts
 Improved concurrency leads to
increased performance in multi-user
environments
 Can index BLOB data -> faster
searching / retrieval
Usage Scenarios



If a particular column is searched frequently
Large tables with many rows
Index Consultant tool assists you in appropriate selection of indexes for
your database!
19
New Storage Format
Functionality
Benefits
 Redesigned persistent storage
format
 Allows new indexes, snapshot
isolation
 Better placement of data on the disk
 More efficient use of page storage
 Faster sequential scans, row
lookups
Usage Scenarios

All ;-)
20
Enhanced Data Management
Performance - customers better equipped to deal with an
explosion of data in frontline environments
•
•
•
•
•
•
•
Materialized views
Snapshot isolation
Intra-query parallelism
Parallel backups
New Index design
New Storage format
Column Compression
•
•
•
•
•
Checkpoint write behind
Expressions
Java VM
New Catalog
Random access to BLOBs
22
Agenda
 SQL Anywhere 10 Enhancements
•
•
•
•
Performance
Protection
Productivity
Innovative Data Movement
 Release Notes
23
Enhanced Data Management
Protection - pushing data protection, whether from theft or system failure,
to even higher levels as consequences of data loss in frontline
environments grow in importance
 High Availability (Hot Failover)
• Database Mirroring
• Cluster agent
 FIPS 140-2 validated security
 Table level encryption




Resource governors
RSA encryption included
Kerberos authentication
New authorities added
• BACKUP and VALIDATE
 Server lockdown to disable
database server features or
groups of features
• Eg. local_call
24
High Availability – Database Mirroring
Functionality
Benefits
 Servers communicating with each
other to increase availability of DB
• Primary – current active server
• Mirror – current standby server
• Arbiter – determines primary
 Maintain separate copies of db / logs
 Clients only see (connect) to 1 server
 Protection of data against system
failure
 Very easy to setup (built-in)
 No special hw or sw requirements
 Does not require particular OS
 Little impact on server performance
 Failover automatic, fast
Usage Scenarios


For highest levels of data protection against system failure (eg if you require
24 x 7 availability)
Use Mirroring if you want something built into the server with no
requirement for third-party software
25
High Availability – Database Mirroring
Arbiter determines who is the
current active server (also
known as primary server)
Arbiter Server
26
High Availability – Cluster Support
Functionality
Benefits
 Custom agent for Veritas Cluster
Service (VCS)
 Set of scripts integrated into VCS install
 One node goes down, automatic failover
to another node with no intervention
required (eg. shared disk)
 Cluster support existed before Jasper
but now more “SQL Anywhere-aware”
 Protection of data against system failure
 Can leverage existing Veritas Cluster
Server (VCS) installations
 More control over how/when failover for
database server occurs
 Can failover a server, or a database on
a server
Usage Scenarios


For highest levels of data protection against system failure (eg if you require
24 x 7 availability)
Use VCS Cluster Agent if you are already a VCS shop
27
FIPS 140-2 Validated Security
Functionality
Benefits
 Strong encryption components have
been FIPS 140-2 validated
 Extended to multiple platforms
beyond Windows including Linux
and Solaris
 FIPS 140-2 validation provided
without having to go through
lengthy and costly FIPS approval
process yourself
Usage Scenarios

Government agencies, financial institutions, healthcare providers requiring
FIPS 140-2 validation of any strong encryption components
28
Table Level Encryption
Functionality
Benefits
 Ability to encrypt individual tables
vs. the complete database
 Enabled through simple database
option
 Allows database users finer
granularity on security control
 Reduces overhead of encrypting /
decrypting non-sensitive data in
database
Usage Scenarios

Companies (eg. government agencies, financial institutions, healthcare
providers) requiring more granularity on strong encryption components
29
Enhanced Data Management
Protection - pushing data protection, whether from theft or system failure,
to even higher levels as consequences of data loss in frontline
environments grow in importance
 High Availability (Hot Failover)
• Database Mirroring
• Cluster agent
 FIPS 140-2 validated security
 Table level encryption




Resource governors
RSA encryption included
Kerberos authentication
New authorities added
• BACKUP and VALIDATE
 Server lockdown to disable
database server features or
groups of features
• Eg. local_call
30
Agenda
 SQL Anywhere 10 Enhancements
•
•
•
•
Performance
Protection
Productivity
Innovative Data Movement
 Release Notes
31
Enhanced Data Management
Productivity - enhanced developer productivity tools to decrease
implementation time of mission critical frontline applications
 Performance Analysis and
Application profiling
 Visual Studio Integration
 .NET 2.0 Support
 SA Deployment Wizard
 UltraLite Enhancements
 Global shared temporary tables
 Temporary procedures
 Task based administration
 Admin tool system wide search
capabilities
 Product wide exception reporting
and statistics gathering
 Internationalization
• Extended multi-byte and
Unicode character sorting
• NCHAR data type
 Interfaces and Tools
• JDBC 3.0 support in iAnywhere
JDBC driver
• JConnect 6
• IPV6 support
 File/Directory data via external
tables
32
Performance Analysis and
Application Profiling
Functionality
Benefits
 Robust tool for app and db
performance troubleshooting
 Problem determination for:
• Concurrency issues
• Pinpointing of queries with suboptimal performance
• Server machine capabilities
 Increased developer productivity
 Flexible
• “Off-line” analysis
• Remote machine analysis
 Decrease risk of performance
related issues before deployment
Usage Scenarios

Performance trouble-shooting tool aimed at 3 different classes of users:
• Beginner DBA (wizard-based)
• Experienced DBA (wizard and tracing database)
• Power-User DBA (attach tracing feature)
33
Performance Analysis and
Application Profiling
34
Enhanced Visual Studio 2005 Integration
Functionality
Benefits
 SQL Anywhere Explorer
• Create connections to SA dbs
• Browse contents of tables / columns
• Toolbar to launch SA tools
• Drag-and-drop operations to populate
forms with controls
 Supports VS 2005 and VS 2003
 Installed within VS by default
 VS developers continue to work in
development environment they are
comfortable with
 Leverage existing knowledge of Server
Explorer
 SQL Anywhere developers have easy
access to tools within VS environment
Usage Scenarios

Large Visual Studio developer base with requirement to extend database
applications to the “front-lines”
 Looking for more powerful alternative to SS Mobile / Express
 May be part of heterogeneous replication environments
35
.NET 2.0 Support
Functionality
Benefits
 ADO.NET preferred data access
component for .NET apps
 .NET 2.0 released with VS2005
 Jasper includes native SA .NET 2.0
provider
 SA supports .NET 2.0 and 1.1
 DataWindow.NET included
 Superior performance (native access, no
bridge technology required)
 Supports .NET 2.0 key features
 Broad Microsoft Windows support
(including Windows Mobile)
 DW.NET provides powerful extensions
to VS data grid support
Usage Scenarios


Existing .NET development shops
DataWindow.NET for programmers looking to easily incorporate complex
business rules and deliver sophisticated data presentation in their datadriven applications
36
Deployment Wizard
Functionality
Benefits
 Easy-to-use SA deployment tool – from
list, just “pick and choose” SA
components to deploy
 Generates a Microsoft Windows installer
file (.MSI)
 Provides alternative to other deployment
methods (silent, custom-built installs)
 Developer productivity – minimizes time
to embed SQL Anywhere into
application
Usage Scenarios


OEMs that need to embed SQL Anywhere
Environments that require hundreds / thousands of deployments
37
UltraLite Enhancements







Single file format across all platforms
Access from SA admin tools: DBISQL, Sybase Central
FIPs-approved security
Bigger database support (now 16 million rows per table)
Smaller footprint (as small as 300k) when not using SQL
Predicates on sync publications
Platforms:
• Symbian OS 7,8
– Series 60, 80, UIQ 2.0 and 2.1
– C++, AppForge development
• Windows Mobile 5
38
UltraLite Enhancements
 Extended Dynamic SQL and db management
• Distinct on aggregates
• UNION
• constraint names, asc/desc in column lists for fkeys/unique
constraints
• START AT
• Updatable cursors
• More properties accessible through functions
• Integrated schema (system tables)
 Complete DDL support
 AppForge Crossfire support
39
Enhanced Data Management
Productivity - enhanced developer productivity tools to decrease
implementation time of mission critical frontline applications
 Performance Analysis and
Application profiling
 Visual Studio Integration
 .NET 2.0 Support
 SA Deployment Wizard
 UltraLite Enhancements
 Global shared temporary tables
 Temporary procedures
 Task based administration
 Admin tool system wide search
capabilities
 Product wide exception reporting and
statistics gathering
 Internationalization
• Extended multi-byte and Unicode
character sorting
• NCHAR data type
 Interfaces and Tools
• JDBC 3.0 support in iAnywhere
JDBC driver
• JConnect 6
• IPV6 support
 File/Directory data via external tables
40
Agenda
 SQL Anywhere 10 Enhancements
•
•
•
•
Performance
Protection
Productivity
Innovative Data Movement
 Release Notes
41
Innovative Data Movement
 Synchronization Modelling Tool
• “ Point-and-click” setup, testing and deployment of synchronization
systems
 Flexibility and Performance
• Direct row handling for sync to virtually any data source
• Script based uploads for SA (in addition to log scanning)
• Global connection scripts
• Named parameters in SQL scripts
• Download only publications
• FIPS approved security option – extended platform support
 Messaging
• Message management and monitoring
• Performance improvements and additional API support
• Mobile Web services
42
7
Manageability – MobiLink Administration
Functionality
Benefits
 New plug-in for Sybase Central
 Intuitive wizard-based approach to
create model of entire sync solution
 Simulation and testing of sync scenarios
 Script generation
 Easy deployment and generation of
remote databases
 Developer productivity - ability to quickly
setup and maintain a MobiLink sync
environment against all supported
consolidated and remote databases
Usage Scenarios



Fast, easy development of initial synchronization system
New users to synchronization
Also useful for prototyping, proof-of-concepts, pilot programs that require
quick implementation
43
New MobiLink Administration
44
Direct Row Handling on Sync
Functionality
Benefits
 Synchronizing to data sources other
than supported consolidated dbs
 Implemented using new MobiLink server
APIs for Java and .NET
 Generates download data, model
passes data to MobiLink for delivery to
remote device
 Sync directly without requirement for
staging database
 Flexibility – increases # of potential data
sources (relational and non) that can
participate in ML sync
 Leverage existing knowledge
• .NET, Java, SQL
Usage Scenarios

Requirement to sync directly with enterprise systems including:
 ERP Systems (SAP, Siebel, PeopleSoft, …)
 Web Servers (IIS, Apache, …), Application Servers (WebLogic, WebSphere …)
 Legacy Systems (Mainframes, …), Data Warehouses (Sybase IQ, ….)
 Non-Standard Relational Database (MySQL, Excel, Access, …)
 Messaging Servers (MQ Series, Netscape Messaging Server, …) etc…
45
Performance Enhancements
Functionality
Benefits
 New threading model
 Initial handshake - decoupling of
authentication and data upload
 Data compression
 Schema caching
 Enhanced communication architecture
 Persistent connections
 Avoids large uploads if authentication
fails
 Reduces amount of time and cost (when
charges apply) of moving data
 Eliminates redundant data transmission
as schema rarely changes
 Better throughput (performance), error
detection, compression, maintainability
Usage Scenarios

Any MobiLink implementations – small or large – can take advantage of
performance gains
46
QAnywhere
Message Management and Monitoring
Functionality
Benefits
 Sybase Central plug-in
• Browse client/server msg store - examine
message properties, status, and history
• Forward, delete, or export messages
• View and modify message store
properties
• View and create agent command files
• View and create transmission rules
 Better development-time debugging
 Better runtime exception
investigation
Usage Scenarios

Developers implementing and maintaining messaging solutions using
QAnywhere
47
QAnywhere
Performance and API Support
Functionality
Benefits
 Optimized message overhead
 Additional API support:
• Currently C++
• New SQL stored procedure
interface to messaging
• New Java API
 Reduction in amount of data sent (lower
cost, better performing applications)
 More efficient handling of interrupted
connections
 Exposes messaging paradigm to
developers more comfortable with SQL /
Java
Usage Scenarios


All developers implementing and maintaining messaging solutions can take
advantage of performance improvements
SQL shops who want to implement messaging
48
Mobile Web Services
Functionality
Benefits
 Built on top of QAnywhere
architecture
 Web services can be invoked from
mobile applications using traditional
tools and techniques
 Requests and responses handled
by QAnywhere
 Allows SOA applications to be
extended to mobile environments
 Asynchronous web services with
reliability and efficiency over nonpersistent connections
Usage Scenarios


Integration with backend systems that make use of web services
Using web services in an occasionally connected environment
49
Innovative Data Movement
 Synchronization Modelling Tool
• “ Point-and-click” setup, testing and deployment of synchronization
systems
 Flexibility and Performance
• Direct row handling for sync to virtually any data source
• Script based uploads for SA (in addition to log scanning)
• Global connection scripts
• Named parameters in SQL scripts
• Download only publications
• FIPS approved security option – extended platform support
 Messaging
• Message management and monitoring
• Performance improvements and additional API support
• Mobile Web services
50
7
Agenda
 SQL Anywhere 10 Enhancements
•
•
•
•
Performance
Protection
Productivity
Innovative Data Movement
 Release Notes
51
SQL Anywhere 10 Platform Changes
 SQL Anywhere
• Solaris Sparc, HP-UX, AIX
– New 64-bit servers only
– 32-bit and 64-bit client support
• Mac support - Intel only (no current plans for PPC)
• Dropping support
– Windows 95/98/ME/NT 4.0
– Compaq TRU64
 UltraLite
• Adding Symbian Series 60, Series 80, UIQ 2.0 and 2.1
• Dropping MIPS support
52
MobiLink Changes
 Consolidated Databases Supported
•
•
•
•
•
SQL Anywhere 10
Sybase ASE 12.5.2, 12.5.3, 15
Microsoft SQL Server 2000, 2005
IBM DB2 UDB 8.1
Oracle 9i, 10g
53
SQL Anywhere 10 Database Format Support
 Prior to V10, new SQL Anywhere releases supported
database formats of previous releases
 In V10, only V10-format databases are supported
• Decision made after consultation with many customers
• Enables us to offer new features such as Snapshot Isolation
• Enables many performance enhancements
 Important notes
•
•
•
•
Faster parallelized unload/reload utility will ease migration
Application level compatibility will not be affected
Older SQL Anywhere clients will continue to work
Synchronization compatibility will not be affected
54
Conclusion
 With version 10 of SQL Anywhere, we have raised the
bar once again in providing developers with an
underlying data management, synchronization, security,
and integration architecture that addresses the
complexities unique to frontline environments.
QUESTIONS?
55
14
Upgrading to
SQL Anywhere 10
Joshua Savill
Product Support Analyst, Sybase iAnywhere
Joshua.Savill@ianywhere.com
Monday, August 7, 2006
2:45 pm - 4:15 pm
Objectives for Presentation
 Overview of how to upgrade current databases and
applications to SQL Anywhere 10
 Demonstration and explanation of SQL Anywhere tools used
during the upgrade process
 Discuss behaviour changes and considerations during the
upgrade process
 Introduce new features to consider while upgrading
58
Agenda for Presentation






Overview of the Upgrade Process
Upgrading to SQL Anywhere 10
Upgrading the MobiLink Server
Upgrading MobiLink Clients
Upgrading UltraLite
Upgrading QAnywhere
59
Agenda for Presentation
 Overview of the Upgrade Process
• Components involved in upgrading
• Advantages of upgrading
• Upgrading best practices





Upgrading to SQL Anywhere 10
Upgrading the MobiLink Server
Upgrading MobiLink Clients
Upgrading UltraLite
Upgrading QAnywhere
60
Components to Upgrade
 Upgrading can involve multiple layers and components
• Components may depend or rely on other component being
upgraded
• Front-end application
• Operating system
• Hardware
• SQL Anywhere software
• Database File ( Consolidated/Remote )
 MobiLink
 UltraLite
 QAnywhere
61
Information on What’s New in SQL Anywhere 10
 Could be upgrading from
version 5.X, 6.X, 7.X, 8.X, or
9.X to SQL Anywhere 10
 Each new release has new
features and behavior
changes
 Full details provided in the
SQL Anywhere 10.0.0
documentation
 Additional resources
provided in the Technical
Support Lounge
62
Advantages of Upgrading
 Platform support
• Operating system support is most current with active supported
versions of SQL Anywhere
• Upgrading to move from an inactive or archived version onto a
supported version
( http://www.ianywhere.com/products/supported_platforms.html )
 Performance improvements
• Query processing, multi-processor, memory management,
improved communications
 New and enhanced features
• Hardware upgrades that can make use of new features
– High availability or clustering
•
•
•
•
Snapshot isolation
Materialized views
NCHAR data type support
Application profiling and diagnostic tracing
63
Upgrading Best Practices
 Review new behavior changes
 SQL statements in older versions may not be supported in SQL
Anywhere 10
• More restrictive due to ANSI compliance
• Coding to a bug
• Test upgrading to SQL Anywhere 10 before rolling out
 Always make a full backup and validate database before and
after the upgrade process
 Benchmark performance
• Check the PLAN() function for key queries
• Measure performance of application with the database
– Start with default database settings, then make changes to improve
performance, if necessary
64
Upgrading Best Practices Con’t
 Revisit performance with upgraded database server
• Review how some queries are written to determine efficiency
• Index Consultant for suggestions on schema improvements
 Test application
• Fix bugs
• Improvements in compliance to standards
• Could be unexpected side effects
– Application may have been coded to a bug
– Reliance on non-static features
E.g. Error message text
65
Upgrading Best Practices Con’t
 Test upgrade procedure in a development environment that is
identical to the production environment
 Verify command line and installation path if multiple versions of
SQL Anywhere are installed ( utilities exist in multiple versions )
 Review installation plan
 Upgrading SQL Remote, MobiLink Client, MobiLink Server and
UltraLite
• These components may have a dependency on SQL Anywhere (
formerly Adaptive Server Anywhere )
• UltraLite may have dependency on MobiLink
• Replicate or synchronize all databases before upgrading
 Upgrading QAnywhere Client
• MobiLink and SQL Anywhere upgrade is required
66
Agenda for Presentation
 Overview of the Upgrade Process
 Upgrading to SQL Anywhere 10
• New database file format
• New feature notes
• How to upgrade to SQL Anywhere 10
 Upgrading the MobiLink Server
 Upgrading MobiLink Clients
 Upgrading UltraLite
 Upgrading QAnywhere
67
Name Changes
 Adaptive Server Anywhere  SQL Anywhere
• Changes to some binary file names
– dbmlsrv9.exe  mlsrv10.exe
• Environment variable name changes
– ASANY9  SQLANY10
• Driver name changes
– .NET, OLE-DB, Perl DBD Provider/Driver renamed
• Default installation directory changed to SQL Anywhere 10
• Sample database name, data and schema changed ( demo.db )
• Unix/Linux configuration script asa_config.sh renamed to
sa_config.sh
68
New Database File Format
 Requires that database files be rebuilt using the Unload utility (
dbunload.exe )
 Old database file formats cannot be started on a SQL
Anywhere 10 engine
 New file format allows for new features that cannot be
implemented with the older format
• Snapshot isolation
• Improved Unicode data support
• BLOB performance enhancements
 More flexibility in adding new features
• Catalog, fixed-length columns, concurrency, international support
 Performance
• Support added for parallelism to improve performance
– Using multiple processors for processing a single query
69
New Database File Format
 Reduced code complexity
• More efficient code in the database server
– Increased stability as code line is more efficient
• Easier to maintain code line and ability to add new feature not
capable when supporting old database file formats
 The Upgrade utility ( dbupgrad.exe ) will not be shipped with
SQL Anywhere 10
 The Unload utility will be able to read older file formats
• The upgrade process will include a special engine for the Unload
utility to read older databases ( dbunlspt.exe )
70
Catalog and Reserve Word Changes
 Catalog changes
• Catalog names now start with an I ( ISYSFILE, ISYSOPTION )
• Benefits
– More Efficient/Faster to access
– Flexibility for updating catalog without affecting applications
– Compatibility views for previous catalog included
• Applications relying on following may need to change
– SYSINFO*, SYSATTRIBUTES, *SYSCOLLATION,
*SYSCOLLATIONMAPPINGS, *SYSUSERPERMS, *SYSUSERPERM
*Deprecated
 Catalog table names have changed, but views for backwards
compatibility Additional reserved words for SQL Anywhere 10
• Caution needs to be taken if reserved words are used in scripts
71
International Language Support
 Support for international languages has been enhanced
• International Components for Unicode ( ICU ) libraries introduced
• Unicode Collation Algorithm ( UCA ) added for sorting the entire
Unicode character set
– More CPU intensive, but can sort most languages in an appropriate
order
 New NCHAR support added
• Used to store Unicode character data up to 8191 characters in
length
• NVARCHAR ( 8191 characters maximum ) and LONG
NVARCHAR ( 2 GB maximum )
• Default collation is UCA
72
Database Collation Additions
 New database collation added
• Norwegian 1252NOR, default on Norwegian Windows systems
• UTF8BIN added for improved sorting of binary data
– UTF8 deprecated
 The Collation utility has been deprecated
• DBCollate function and dbcollat.exe removed
• Creation of custom collations is no longer supported
• Custom collations are preserved in the database when upgrading
 Affects on existing applications
• SORTKEY functionality is still supported
• COMPARE functionality is still supported
• Deployment of ICU library may require addition files in the
deployment list
73
ANSI Compliance
 SQL Anywhere 10 complies completely with the SQL-92-based
United States Federal Information Processing Standard
Publication ( FIPS PUB ) 127
 With minor exceptions, SQL Anywhere 10 complies with
ISO/ANSI SQL-2003 core specifications
 Substring() function now conforms to ISO/ANSI SQL-2003
• Negative or zero start offset is now treated as if the string is
padded on the left with non-characters
• Gives an error if negative length is provided
• ansi_substring option provided for compatibility
 Integer overflow now produces a SQLSTATE = 22003 overflow to conform to ISO/ANSI SQL-2003
• ansi_integer_overflow option provided for compatibility
74
ANSI Compliance
 string_rtruncation option default is changed to ON
• Data truncation by database engine now causes error by default
 Further ANSI compliance questions are welcomed in the
Technical Support Lounge
75
Java Virtual Machine Enhancements
 Initialized databases are always Java enabled
 iAnywhere Virtual Machine deprecated
• Previously SQL Anywhere shipped an iAnywhere Virtual Machine
• SQL Anywhere 10 uses an external VM
– External VM will run in its own process space
– Java logic not affected
– Can make use of any external Java VM
• Benefits
– Expected better performance
– Immediate support of new versions of Java
– No longer a separate key to install
• New options
– java_location ( no default )
– Java_main_userid ( default dba )
76
Connection and Security
 iAnywhere JDBC driver supports JDBC 3.0
 jConnect 5.5 and 6.0 are shipped with SQL Anywhere 10
• jConnect 4.5 is no longer supported
 Support for IPv6 on Windows XP, Windows 2003, and Linux
 -sc switch for C2 security is no longer supported
• Common Criteria is more comprehensive/up-to-date
• Named Pipes no longer supported
 RSA now included with SQL Anywhere 10
 Enhancements to FIPS support
77
Target Platform Support
 Platforms Targeted in SQL Anywhere 10
• Windows 2000, XP, 2003
– Remove support for Windows NT 4.0, 95, 98, ME
• Linux Kernel minimum 2.6.5
• Solaris 8, 9 and 10
– Solaris 7 not supported
• NetWare 5.1 (sp6), 6.0 (sp3) and 6.5
• Mac OS X PPC replaced in favour of Mac Intel
• Windows CE 3.0, 4.1, 4.2, Windows Mobile 5.0
• Support for 486 chipset removed
• 64-bit Database Servers on AIX, HPUX and Solaris in place of the
32-bit servers
78
How to Upgrade to SQL Anywhere 10
 Backup and validate the existing database
 Shutdown all other SQL Anywhere database servers
 The Unload utility or Unload Database wizard will rebuild the
database file format into SQL Anywhere 10
79
Upgrade Restrictions
 Recommend to disconnect from any earlier versions of the
database server and shut all other database servers
 Do not include the ENG, START, or LINKS connection
parameters in the dbunload connection string or enter the
Server Name and Start Line fields in Sybase Central
connection dialog box
 The Unload utility must be run on the same machine where the
database file is located as a shared memory connection is
required
 Environment variables SATMP and ASTMP must be set to the
same value, or not set at all
 Netware database need to be rebuilt on a Windows or Unix
machine
80
Special Considerations
 Passwords in newly created SQL Anywhere 10 database are
case sensitive regardless of case-sensitivity of the database
 Rebuilding an existing database, case sensitivity of the
database is as follows
• If password was originally entered in case-insensitive database,
password remains case-insensitive
• If password was originally entered in case-sensitive database,
uppercase and mixed case passwords remain case-sensitive,
lowercase passwords become case-insensitive
• Newly created passwords are case-sensitive
 Default pages size is 4096 bytes
 Collations from old database are unloaded and reused unless
otherwise specified
81
Rebuilding into SQL Anywhere 10
 The Unload Database wizard in Sybase Central
 The Unload utility
 Ability to create a new database, replace the existing
database with the new file format, or unload the
database to flat files
 Required to rebuild the database into SQL Anywhere
10
82
The Unload Database Wizard in Sybase Central
 Starting the Unload Database wizard
• Start Sybase Central and click ‘Prepare a Version 9 or Earlier
Database for SQL Anywhere 10’ or select Tools  SQL Anywhere
10  Unload Database
• Demo on how to use the Unload Database wizard in Sybase
Central
83
The Unload Utility ( dbunload.exe )
 Not all dbunload options apply when upgrading the database to
SQL Anywhere 10
 -c
• Specifies connection parameters for the source database
• For upgrading the database do not use the ENG, START, or
LINKS connection parameters
• The user ID supplied needs to be DBA authority
 -an <filename>
• Creates a new SQL Anywhere 10 database from the existing
database ( original database file is preserved )
• Initialization options are not changed during the rebuild
84
The Unload Utility Con’t
• When rebuild is complete, new dbspaces will have the extension
.dbR
• This option does not preserve the offsets for replication or
synchronization
 -ar <directory>
• Creates a new SQL Anywhere database to replace the existing
database ( original database file is not preserved )
• The directory name provided must contain the old transaction logs
for replication or synchronization
• When rebuild is complete, new dbspaces will have the extension
.dbR
• This option preserves the offsets for replication or synchronization
• When rebuilding an encrypted database, the encryption key for the
original and new database must be the same
85
The Unload Utility Con’t
 -o <filename>
• Writes output messages to the supplied file name
 -r <[directory\]filename>
• Modify the name and directory of generated reload script file
 -v
• Displays verbose output during the database unload
– Name of the tables being unloaded
– Number of rows being unloaded
86
Upgrading to SQL Anywhere 10 Examples
Example # 1
dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” -ar c:\temp
In current directory before running dbunload:
asademo.db
asademo.log
In current directory after running dbunload:
asademo.db
87
Upgrading to SQL Anywhere 10 Examples Con’t
Example # 2
dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” -an
c:\newdb\newdb.db
In current directory before running dbunload:
asademo.db
dbspace1.db
asademo.log
In newdb directory after running dbunload:
newdb.db
newdb.log
88
Upgrading to SQL Anywhere 10 Examples Con’t
In current directory after running dbunload:
asademo.db
dbspace1.db
asademo.log
dbspace1.dbR
89
Upgrading to SQL Anywhere 10 Examples Con’t
Example # 3
dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” c:\backup
In the current directory before running dbunload:
asademo.db
asademo.log
In the current directory after running dbunload:
asademo.db
asademo.log
reload.sql
\backup\*.dat
90
Upgrading to SQL Anywhere 10 Examples Con’t
dbinit newdb.db
dbisql -c “UID=dba;PWD=sql;DBF=newdb.db” reload.sql
In the current directory after running dbinit and dbisql:
asademo.db
asademo.log
newdb.db
newdb.log
The reload.sql and \backup\*.dat files can be removed
91
Agenda for Presentation
 Overview of the Upgrade Process
 Upgrading to SQL Anywhere 10
 Upgrading the MobiLink Server
• Consideration during upgrade
• Upgrading the consolidated database
• New feature notes
 Upgrading MobiLink Clients
 Upgrading UltraLite
 Upgrading QAnywhere
92
MobiLink Upgrade Process
 Dependent on whether the database file will be new or
upgraded
 Often customers deploy a new application with a new
synchronization environment
 Typically upgrades are done in stages/phases
• Script versioning to accommodate an upgrade in stages/phases
 Important to have all remote databases synchronized before
starting the upgrade process
 Validate and backup the database before staring upgrade
process
 Test the upgrade process in an environment that is equivalent
to the production environment
93
Upgrading the Consolidated Database
 Setup script required to run on consolidated database before
being upgraded ( including SQL Anywhere 10 database )
• Appropriate upgrade script can be found in the
%SQLANY10%\MobiLink\upgrade\ directory
• Newly created consolidated database require the appropriate setup
script found in the %SQLANY10%\MobiLink\setup\ directory
– By default, MobiLink system tables are no longer created in the
database during initialization
 Ability to use a user other than the DBA to start the MobiLink
server
• Grant permission to the user on the necessary MobiLink system
tables
94
MobiLink System Table Changes
 New MobiLink server system tables and schema
• ml_database, ml_column, and ml_qa_clients system tables added
• Altered schema to the ml_subscription, ml_user, ml_script,
ml_listening and ml_sis_sync_state tables
 New ways to clean up the MobiLink system tables on the
consolidated database
• ml_delete_sync_state_before system procedure added
– Purges information about obsolete remote databases
• ml_delete_sync_state system procedure added
– Deletes unused or unwanted synchronization state information
• ml_reset_sync_state system procedure added
– Resets synchronization state information
95
MobiLink Server Changes
 MobiLink server name has changed from dbmlsrv9 to mlsrv10
• Many MobiLink utilities have dropped the db and added ml if there
was no ml already in the name
• MobiLink DLLs have also changed naming conventions
 Compatibility with existing software
• SQL Anywhere 10 MobiLink server has the ability to synchronize
with version 8, 9 and 10 clients
• mlsrv10 -xo option needed to synchronize version 8 and 9 clients
 Options for setting cache size are deprecated ( -bc, -d, -dd, -u )
• Replaced with the mlsrv10 -cm option
96
Script Changes
 upload_cursor, new_row_cursor, old_row_cursor scripts are
deprecated and replaced with statement based uploads
 Statement based uploads are easier to understand for most
developers and offer better ODBC driver support
• Better performance with statement based scripts
 New MobiLink Create Synchronization Model wizard generates
scripts
•
•
•
•
•
Script generation with timestamps
Shadow table generation
Deployment features
GUI for column mappings
Automatic script generation with the -za and -ze options has been
deprecated
97
Script Changes
 Unrecognized scripts will now cause synchronization to fail
• Unrecognized table-level or connection-level scripts
• Presence of cursor-based upload scripts
 Errors in upload or download scripts will now cause
synchronization to fail
 When a begin script is called, the corresponding end script is
called regardless of the success of synchronization
 Upload scripts are not called for a table when there is no data
to synchronize
 Global script version added
• Can define a script that is automatically used in all
synchronizations unless another script is specified
• Avoids duplicate connection level scripts
98
Script Changes
 Named script parameters can now be used
• Can use predefined named parameters or create user defined
named parameters
For Example:
Select * from worktable where
last_modified > { ml s.last_download }
and owner = { ml s.username };
Instead of the following:
Select * from worktable where
last_modified > ? and owner = ?
99
Script Changes
 Using SQL Anywhere 10 and Microsoft SQL Server 2005
consolidated databases, the isolation level should not be
changed in the begin_connection script
• Default isolation level for downloads is now snapshot
• Changes to the isolation level for downloads should be in the
begin_download script or using the new mlsrv10 -dsd option to
disable snapshot isolation
• Changing the isolation level in the begin_connection script is still
good practice for consolidated databases that do not use snapshot
isolation
100
Protocol Enhancements
 Changes to protocol names and options for network security
• -x https_fips changed to -x https(fips=y;...)
– HTTPS with FIPS
• -x rsa_tls changed to -x tls(tls_type=rsa;...)
– TCP/IP with TLS using RSA encryption
• -x rsa_tls_fips changed to -x tls(tls_type=rsa;fips=y;...)
– TCP/IP with TLS using RSA encryption and FIPS
• -x ecc_tls changed to -x tls(tls_type=ecc;...)
– TCP/IP with TLS using ECC encryption
• -x tcpip(security=...) changed to -x tcpip
– TCP/IP
• -x http(security=...) changed to -x http
– HTTP
101
Error Handling
 handle_error and handle_odbc_error events are more
restrictive
• Called only when an ODBC error occurs while MobiLink is
processing an insert, update, or delete script during the upload
transaction, or is fetching download rows
• If an ODBC error occurs during other times of the synchronization,
the MobiLink server will call the report_error or report_odbc_error
script and abort the synchronization
102
Target Consolidated Platform Support
 Targeted Consolidated Database Vendors
• SQL Anywhere 10
• Sybase ASE 12.5.2, 12.5.3, 15.0
– Windows, Linux
• Microsoft SQL Server 2000, 2005
• Oracle 9i and 10g
– Linux, Windows, Solaris
• IBM DB2 UDB 8.1
– AIX, Linux, Windows
103
Suggested ODBC Drivers
 Sybase ASE and IBM DB2 ODBC Drivers are not shipped with
SQL Anywhere 10
• DB2 and ASE Version 12.5.3 and above include ODBC drivers,
which are the recommended drivers
 Oracle ODBC Drivers
• Data Direct driver ( Wire Protocol ) will be available for download
for the SQL Anywhere 10 GA release
• New iAnywhere Solutions 10 - Oracle ODBC Driver is being
developed and will be available after the SQL Anywhere 10 GA
release
Recommended Drivers:
( http://www.ianywhere.com/developer/technotes/odbc_mobilink.html )
104
Preparation
 Review upload scripts and remove any upload cursor scripts
• Replace with statement based upload scripts
 Review database schema to determine if changes are needed
in the synchronization definitions
 Review the script versions and determine if there needs to be
changes
• New script versions are recommended if synchronizing older client
( version 8 or 9 ) with version 10 clients
 If moving from version 7, review address parameter ordering
 Evaluate binary name changes and ensure the proper version
of the utilities are being used
 Test all scripts prior to upgrading to the new version
105
Execution Plan
 Stop the MobiLink server running on the consolidated database
 Backup and validate the consolidated database
 Identify the consolidated database type ( Oracle, IBM DB2,
SQL Anywhere, etc )
 Execute the appropriate upgrade script in the upgrade folder
• E.g. %SQLANY10%\MobiLink\upgrade\9.0.0\upgrade_ora.sql if
running an Oracle consolidated with version 9.0.0
• Note DB2 has special requirements




Upgrade the consolidated database
Make any script changes based on the preparation items
Assemble command line based on the preparation
Start the MobiLink server with the appropriate command line
106
Agenda for Presentation




Overview of the Upgrade Process
Upgrading to SQL Anywhere 10
Upgrading the MobiLink Server
Upgrading MobiLink Clients
• Consideration for upgrade
• New feature notes
• Upgrading remote databases
 Upgrading UltraLite
 Upgrading QAnywhere
107
MobiLink Clients Upgrade Process
 Upgrading the software
• Recommended to upgrade the MobiLink client and SQL Anywhere
database at the same time
– Remote database must be upgraded before running the new dbmlsync
utility for SQL Anywhere 10
 Upgrading the remote database
• Synchronize all outstanding data
• Rebuilding the database into SQL Anywhere 10
• Schema changes or significant database changes will require a
manual rebuild of the remote database
108
User Name and Remote IDs
 MobiLink user names and remote IDs
• Unique remote IDs are now created for each remote database
involved in synchronization
– MobiLink user name no longer needs to be unique
– MobiLink user name can now be considered a true user name for
authentication
109
Deprecated Behaviour
 Download error hooks deprecated
• sp_hook_dbmlsync_fatal_sql_error and
sp_hook_dbmlsync_sql_error have been removed
 Version 7 syntax and utilities have been deprecated
•
•
•
•
MobiLink client database extraction utility ( mlxtract )
CREATE SYNCHRONIZATION SITE statement
CREATE SYNCHRONIZATION DEFINITION statement
CREATE SYNCHRONIZATION TEMPLATE statement
110
Preparation
 Review database schema to determine how to upgrade the
database
• No schema changes, the remote database can be upgraded
using the Unload utility
• Schema changes or significant database changes will require the
database be manually upgraded
 Review the script versions used by the remote database
• May need multiple script versions if planning to synchronize older
clients
 Evaluate binary name changes and ensure the proper version
of the utilities are being used
 Test all scripts prior to upgrading to the new version
111
Execution Plan 1
 Creating a new remote database if schema change or
significant database changes are required
• Start with an existing SQL Anywhere database, or create a new
one and add the necessary tables
• Create one or more publications in the remote database
– CREATE PUBLICATION statement
• Create the MobiLink users in the remote database
– CREATE SYNCHRONIZATION USER statement
• Register users with the consolidated database
– mluser authentication utility
• Subscribe MobiLink users to one or more of the publications
– CREATE SYNCHRONIZATION SUBSCRIPTION statement
112
Execution Plan 2
 Upgrading using the Unload utility to rebuild the database into
SQL Anywhere 10
• All data should to be synchronized before upgrading the database
• Backup and validate the database before upgrading
dbunload -c “UID=dba;PWD=sql;DBF=asademo.db” -ar c:\temp
 MobiLink remote databases require the -ar option to
automatically rebuild the database
• Transaction log offsets need to be preserved for synchronization
purposes
• Extremely important to backup and validate the database before
attempting an upgrade
– Automatic rebuild will replace the existing database file
113
Execution Plan 3

Upgrading using the Unload utility to rebuild the database into
SQL Anywhere 10 but manually preserving the transaction
log offset
•
•
Perform a successful synchronization, validate and backup the
remote database
Run the dbtran.exe utility to display the starting offset and ending
offset of the database transaction log
–
•
Rename the transaction log and ensure that it is not modified
during the unload process
–
•
•
Make note of the ending offset as it is required
Move the renamed log file to a secure location, such as an offline
directory
Unload the database
Initialize a new database
114
Execution Plan 3 Con’t
•
•
•
•
Reload the data into the new database
Shut down the new database
Erase the transaction log of the new database
Run dblog.exe on the new database to reset the transaction log
offsets
– Use -z to specify the ending offset that was recorded
– Use -x to set the relative offset to zero
E.g. dblog -x 0 -z 137829 database-name.db
• Start dbmlsync, specifying the location of the original log file that
was moved to the secure location
• When the old transaction logs are no longer needed, set the
database option delete_old_logs
115
Upgrading SQL Remote
 SQL Anywhere 10 replication will work pre-SQL Anywhere 10
SQL Remote clients provided new data types are not
introduced in the system ( NCHAR )
 Recommend to migrate to MobiLink if using SQL Remote for
ASE
( http://www.ianywhere.com/whitepapers/migrate_to_ml.html )
 SQL Remote for ASE is EOL’d
( http://www.ianywhere.com/developer/eol/sql_remote_ase_160505.html )
 Any further questions regarding the SQL Remote upgrade can
be answered in the Technical Support Lounge
116
Agenda for Presentation





Overview of the Upgrade Process
Upgrading to SQL Anywhere 10
Upgrading the MobiLink Server
Upgrading MobiLink Clients
Upgrading UltraLite
• Considerations for upgrade
• New feature notes
• API changes
 Upgrading QAnywhere
117
UltraLite Upgrade Process
 Most UltraLite database upgrades occur with application
upgrades
• Synchronize previous application
• Deploy new application and database
 Schema files are no longer used
•
•
•
•
•
Can deploy database file with application
Deploy database file through mlfiletransfer.exe
Call CreateDatabase function and execute DDL
Plan for non-synchronizing tables
Database creation function/method needs to be added
– Remove all schema upgrade code and schema file reference code
118
Advantages of UltraLite Upgrade
 Increased database limits
• Maximum number of rows in a table increased to 16 million
 Integrated schema
• UltraLite is now a standalone RDBMS and no longer requires a
separate schema file to define logical structure of the database
• UltraLite database can now be created directly
 Increased database performance and data integrity
 Indexes may utilize hashing
• Hash size can be specified on a per-index basis
• Improved performance for index lookups
 Checksum validation of the database added
 Extended BLOB support
• Ability to update, cast data types, and get the length of BLOBs
119
Advantages of UltraLite Upgrade Con’t
 Palm support for network_leave_open
• Palm devices can choose whether network connectivity stays open
after synchronization
 Configurable and increased default cache size for HotSync
conduit synchronization
• Default cache size ( on desktop ) for UltraLite conduit increased to
4 MB
• Improves synchronization time by reducing unnecessary file I/O
 Improved MobiLink client network layer
• Synchronization compression is available for all protocols
• Persistent connections
• Resumable synchronization
120
Advantages of UltraLite Upgrade Con’t
• Introduction of IPv6 support
• Improved error detection and debugging
 Set table order for synchronization
• Ability to specify table ordering to avoid referential integrity issues
during table upload
121
Upgrading UltraLite Database
 Upgrading database on desktop
• ulunloadold – exports XML from version 9 .udb or .usm
• ulload – creates a new database and loads in the XML
• Sybase Central Upgrade wizard can be used
 Creating new databases
• No longer a separate Unicode runtime
• Sybase Central wizard can be use to set the options
 Can now use graphical tools
• Sybase Central now supports UltraLite
• Interactive SQL now supports UltraLite
122
UltraLite Applications: C/C++ Static APIs
 IN
• Focus on standards-based interfaces going forward
 OUT - Static APIs
• ESQL applications can be easily migrated
– Simpler build process as SQL Anywhere is no longer required
– Review SQL used as UltraLite must now support it
– sqlpp -u generates UltraLite code
• Static C++ API based applications can migrate to the C++
component
– Sybase Central includes Migrate C++ Utility
123
UltraLite Applications: APIs
 Keeping pace with mobile application environment
 IN
• Symbian OS ( C++ and Crossfire )
• C/C++, m-Business Anywhere, or Crossfire are recommended for
cross-platform development
• Windows Mobile 5.0
 OUT
• Palm 3.x
• Static Java, Native UltraLite for Java, and ActiveX interfaces
• .NET iAnywhere.UltraLite namespace in favor for
iAnywhere.Data.UltraLite namespace
 Synchronization code
• Secure synchronization streams are now all separate ( no security
124
parameters )
Name Changes
 Name changes for command-line utilities
• dbuleng9.exe has been renamed to uleng10.exe
• dbulstop.exe has been renamed to ulstop.exe
• dbcond9.exe has been renamed to ulcond10.exe
 Any further questions regarding the UltraLite upgrade can be
answered in the Technical Support Lounge
125
Agenda for Presentation






Overview of the Upgrade Process
Upgrading to SQL Anywhere 10
Upgrading the MobiLink Server
Upgrading MobiLink Clients
Upgrading UltraLite
Upgrading QAnywhere
• What is QAnywhere?
• Considerations for upgrade
126
What is QAnywhere?
 Application-to-application messaging system
• Store-and-forward nature of messaging
– Messages can be constructed even when destination application is not
reachable over the network
• Network-independent communication
 Provides messaging between mobile devices or between
mobile devices and the enterprise
 Permits seamless communication with other messaging
systems that have a JMS interface
• Integration with J2EE application
127
Upgrading QAnywhere
 The QAnywhere Message Server can communicate with older
QAnywhere message agents using the -xo option
 The QAnywhere Message Server upgrade process is identical
to that of the MobiLink Server
 To upgrade the QAnywhere Message Agent
• Required to upgrade the message store and this process is
identical to that to the MobiLink Client coupled with the -su switch
on the qaagent
• qaagent -sur is offered to simplified means to the above
 Transaction log is no longer used or maintained
 New option for setting up failover
 Persistent connections are introduced
128
Upgrading QAnywhere Con’t
 qaagent -port deprecated
• The -port option specified a port number on which QAnywhere
Agent listened for communications from the listener
 qaagent -la_port replaced
• The -la_port option has been replaced by the -lp option
 qaagent -push_notifications is renamed
• Now called -push
 getPropertyNames replaced
• The getPropertyNames function has been replaced with the
beginEnumPropertyNames, nextPropertyName, and
endEnumPropertyNames functions
 Any further questions regarding the QAnywhere upgrade can
be answered in the Technical Support Lounge
129
Questions
 Questions?
130
Application Development
with SQL Anywhere for .NET
Bill Hillis
Senior Manager - Engineering, Sybase iAnywhere
hillis@ianywhere.com
Monday, August 7, 2006
4:30 pm – 6:00 pm
Agenda
 Introduction to .NET
 SQL Anywhere and ADO.NET
 Visual Studio Integration
 What’s new in SQL Anywhere 10
133
.NET: Definition
 .NET technology enables the creation and use of XML-based
applications, processes, and Web sites as services that share and
combine information and functionality with each other by design,
on any platform or smart device, to provide tailored solutions for
organizations and individual people.
 .NET is a comprehensive family of products, built on industry and
Internet standards, that provide for each aspect of developing
(tools), managing (servers), using (building block services and
smart clients) and experiencing (rich user experiences) Web
services.
 http://www.microsoft.com/net/basics/faq.asp
134
.NET Framework
 Infrastructure for the overall .NET platform
 Common Language Runtime (CLR)
• Managed, protected application execution environment
• C#, Visual Basic.NET, C++, J#, …
 Common Class Libraries
• Windows Forms, ADO.NET, ASP.NET,…
 .NET Compact Framework
• Subset of .NET Framework for smart devices
• Part of Visual Studio.NET 2003
• Included on device with CE.NET (CE 4.1), add-on for older devices
135
.NET: Managed Code
 Code is written in desired language (C++, C#, VB.NET,
Pascal, etc.)
 Compiled into Microsoft Intermediate Language (MSIL)
 At runtime Common Language Runtime (CLR)
compiles the MSIL code and executes it
136
.NET Terms
 Namespace
• “A logical naming scheme for grouping related types”
• Analogous to Java packages
• iAnywhere.Data.SQLAnywhere.SAConnection 
iAnywhere.Data.SQLAnywhere is the namespace
 Assembly
• “A collection of one or more files that are versioned and deployed
as a unit”
• DLLs in .NET-land
• Unlike DLLs, .NET assemblies also include version
control/security information
 GAC (Global Assembly Cache)
• “A machine-wide code cache that stores assemblies specifically
installed to be shared by many applications on the computer”
137
What is ADO.NET?
 Microsoft’s latest data access API
• ODBC, DAO, RDO, OLE DB, ADO
 Implements System.Data namespace
 “Data providers” manage access to data stores
 Providers from Microsoft:
• System.Data.OleDb
• System.Data.Odbc
• System.Data.SQLClient
• System.Data.OracleClient
 “Managed provider”  “Data provider”
138
ADO.NET Interfaces
 Each data provider implements the following classes:
•
•
•
•
Connection – connects to data source
Command – executes commands
DataReader – forward-only, read-only access to data
DataAdapter – fills DataSet and handles updates
• Parameter – parameter to a Command object
• Transaction – provides commit/rollback functionality
• Error, Exception – collect error/warning messages
139
Agenda
 Introduction to .NET
 SQL Anywhere and ADO.NET
 Visual Studio Integration
 What’s new in SQL Anywhere 10
140
SQL Anywhere Interfaces
 ODBC
 ESQL
 OLEDB
 Open Client
 JDBC
 Perl
 PHP
…
 ADO.NET
141
SQL Anywhere Data Provider
 Implements iAnywhere.Data.SQLAnywhere namespace
•
•
•
•
•
SAConnection
SACommand
SADataReader
SADataAdapter
etc.
 Supports Windows (.NET framework) and Windows CE
(.NET compact framework)
 Also support 64-bit Windows
142
SQL Anywhere Data Provider in v8, v9
 The namespace was changed for SQL Anywhere 10
 Previously iAnywhere.Data.AsaClient namespace
•
•
•
•
•
AsaConnection
AsaCommand
AsaDataReader
AsaDataAdapter
etc.
 Available since 8.0.2.4122 (March 2003)
143
ADO.NET Data Providers For SQL Anywhere
 OLEDB
 ODBC
 SQL Anywhere
iAnywhere.Data.SQLAnywhere
System.Data.Oledb
System.Data.Odbc
SA OLEDB Driver
SA ODBC Driver
SQL
Anywhere
144
Example using DataReader (C#)












SAConnection conn =
new SAConnection( “dsn=SQL Anywhere 10 Demo” );
conn.Open();
SACommand cmd = new SACommand(
“select GivenName from Employees”, conn );
SADataReader reader = cmd.ExecuteReader();
while( reader.Read() ) {
str = reader.GetString( 0 );
Console.WriteLine( str );
}
reader.Close();
conn.Close();
145
Example using DataAdapter (VB.NET)
 Dim conn As New
iAnywhere.Data.SQLAnywhere.SAConnection()
 conn.ConnectionString = “dsn=SQL Anywhere 10 Demo"
 conn.Open()
 Dim ds As New DataSet()
 Dim da As New SADataAdapter

("select * from Employees", conn)
 da.Fill(ds, "Employees")
 DGEmployees.DataSource = ds
 DGEmployees.DataMember = "Employees"
146
Using the SQL Anywhere Data Provider
 Use Visual Studio.NET (VS.NET 2003 or 2005 preferred)
 Reference the provider in your project (required)
• Project menu, Add Reference
• In the .NET tab, find iAnywhere.Data.SQLAnywhere.dll
• If the provider is not listed, find it in %SQLANY10%\Assembly
 Reference provider in your code (optional)
• Allows you to use SQL Anywhere provider classes without
namespace prefix
• C#: using iAnywhere.Data.SQLAnywhere
• VB.NET: Imports iAnywhere.Data.SQLAnywhere
147
SQL Anywhere ADO.NET Data Provider
 Classes
• SAConnection
• SAError
• SAException
•
•
•
•
SACommand
SAParameter
SADataReader
SADataAdapter
•
•
•
•
SACommandBuilder
SAErrorCollection
SAInfoMessageEventArgs
SAParameterCollection
 Classes (continued)
–
–
–
–
–
SAPermission
SAPermissionAttribute
SARowUpdatedEventArgs
SARowUpdatingEventArgs
SATransaction
 Enumerations
– SADbType
 Delegates
– SAInfoMessageEventHandler
– SARowUpdatedEventHandler
– SARowUpdatingEventHandler
148
ADO.NET Application Tasks
 Connecting
 Error handling
 Executing SQL
 Retrieving data
 Transactions
 Disconnected result sets
149
Connecting
 SAConnection
• Represents a connection to a SQL Anywhere database
• Uses normal SA connection strings
• Optional use of event handlers (InfoMessage, StateChange)
150
Connection Example
 using iAnywhere.Data.SQLAnywhere;
 private SAConnection myConn;
 myConn = new iAnywhere.Data.SQLAnywhere.SAConnection();





myConn.ConnectionString =
"Data Source=SQL Anywhere 10 Demo;UID=DBA;PWD=sql”;
myConn.Open();
…
myConn.Close();
151
Connection Pooling
 ADO.NET spec dictates that connection pooling be
enabled by default
• Even on Windows CE!
• Disable in connection string: POOLING=false
 SQL Anywhere server may not auto-stop with
pooling enabled
• Connection object must be destroyed first
 myConn.ConnectionString =
 “POOLING=FALSE;Data Source=SQL Anywhere 10
Demo;UID=DBA;PWD=sql";
152
Error Handling
 SAException
• Thrown by a failed statement (try/catch)
• Message parameter contains error message
• Errors property is a collection of SAError objects
 SAError
• More detailed SQL Anywhere-specific error information
• Message, NativeError, Source, SqlState
153
Errors and Exceptions Example
 try {

myConn = new SAConnection(

"Data Source=SQL Anywhere 10 Demo” );

myConn.Open();
 } catch( SAException ex ) {

MessageBox.Show(

ex.Errors[0].Source + " : " +

ex.Errors[0].Message + " (" +

ex.Errors[0].NativeError.ToString() + ")",

"Failed to connect" );
}
154
Demo:
155
Executing SQL
 SACommand
• Represents a SQL statement or stored procedure that is
executed against a SQL Anywhere database
• Parameter property is a collection of SAParameter objects
 Multiple methods to execute your SQL
• ExecuteNonQuery (returns a row count)
• ExecuteReader (returns result set – DataReader)
• ExecuteScalar (returns a single value – column 1, row 1)
 Stored procedures
• Use the name of the procedure as the statement (no “call” or
“exec”)
• Set the CommandType property to StoredProcedure
156
SACommand Example
 SAConnection myConn;
 SACommand myCmd;
 int num_depts;
 myConn = new SAConnection(

“ENG=demo10;UID=DBA;PWD=sql";
 myConn.Open();
 myCmd = new SACommand(

"select count(*) from Department", myConn );
 num_depts = (int) myCmd.ExecuteScalar();
157
Retrieving Data
 SADataReader
• Read-only, forward-only result set from a query or stored
procedure (rows are fetched as needed)
• GetXXX methods to get column value as specific data types
• Read method moves to next row
 SADataAdapter
• Used to fill a DataSet; fetches all rows and closes cursor
• More on this later…
158
DataReader Example




SACommand cmd = new SACommand(
"select DepartmentId, DepartmentName from Departments",myConn);
SADataReader reader;
reader = cmd.ExecuteReader();
 while( reader.Read() ) {

int id = reader.GetInt32(0);

string name = reader.GetString(1);

MessageBox.Show( “Id: " + id + "\nName: " + name );
 }
 reader.Close();
159
DataReader Example – BLOBs
 SACommand cmd = new SACommand(

"select bitmap from images where id = 1", myConn);
 SADataReader reader = cmd.ExecuteReader();
 if( reader.Read() ) {

// get the length of the BLOB by passing a NULL buffer

long len = reader.GetBytes(0, 0, null, 0, 0);

byte bitmap[] = new byte[len];

// get the BLOB

reader.GetBytes(0, 0, bitmap, 0, (int)len);
 }
 reader.Close();
160
Demo:
161
Transactions
 SATransaction
• Represents a SQL transaction
• Returned by SAConnection.BeginTransaction()
• Commit, Rollback methods
• IsolationLevel property
162
Autocommit
 Autocommit is on by default in ADO.NET
• Disable by explicitly using an SATransaction






myTran = myConn.BeginTransaction();
myCmd = new SACommmand(
“call sp_update_some_data()”, myConn, myTran );
myCmd.ExecuteNonQuery();
…
myTran.Commit();
163
Disconnected Result Sets
 ADO.NET DataSet (System.Data.DataSet)
• Disconnected data access
• In-memory cache of data retrieved from database
• A collection of DataTables which consist of:
– DataRow (data)
– DataColumn (schema)
– DataRelation (relate DataTables via DataColumns)
• Can read/write data/schema as XML documents
• Works with data providers to load and modify data using the
provider’s DataAdapter
164
SADataAdapter
 SADataAdapter
• Represents a set of commands and a database connection used to
fill a DataSet and to update a database
• Fill method fetches all rows and closes cursor
• Update method applies changes to DataSet to database (beware
of ConcurrencyException!)
• SelectCommand, InsertCommand, UpdateCommand,
DeleteCommand properties
 SACommandBuilder
• Attached to an SADataAdapter
• Given a SELECT statement, generates corresponding
INSERT/UPDATE/DELETE statements
165
DataAdapter Example
 SADataAdapter da;
 SACommandBuilder cb;
 DataSet ds;
 da = new SADataAdapter("select * from product", conn );
 cb = new SACommandBuilder(da);
 ds = new DataSet();
 da.Fill(ds, "product");
 ...
 da.Update(ds, "product“ );
166
Demo:
167
Application Deployment
 SQL Anywhere ADO.NET Provider has two files
• iAnywhere.Data.SQLAnywhere.dll (managed code)
• dbdata10.dll (native code)
 Both files must be deployed
• Version of files (i.e. build number) must match
• iAnywhere.Data.SQLAnywhere.dll will throw error if versions
don’t match
iAnywhere.Data.SQLAnywhere.dll
Your
Application
.NET Common Language Runtime
dbdata10.dll
SQL
Anywhere
168
Updating the SQL Anywhere Provider
 At compile time, .NET compilers use strong name of
referenced assemblies
• Strong name includes both name AND version
• Microsoft’s attempt to eliminate “DLL hell”
 At run time, .NET looks for assemblies based on strong
name
 An application compiled with
iAnywhere.Data.SQLAnywhere version 10.0.0.1234 will
only run with version 10.0.0.1234 UNLESS you have a
publisher policy file in place
169
Publisher Policy Files
 Policy files redirect one version of an assembly to another
 Installed into GAC
 SQL Anywhere EBFs install policy files, for example:
• Application built against 10.0.0.1000
• EBF applied to machine; upgrade to 10.0.1.1883
– EBF installs policy file
– Requests for 10.0.0.0 – 10.0.1.1883 redirected to 10.0.1.1883
• %SQLANY10%\Assembly\V2\iAnywhere.Data.SQLAnywhere.dll.config
 Security is built-in to policy files
• Policy files cannot be compiled without private key assembly was signed
with
• Only iAnywhere can create policy files for iAnywhere assemblies
170
Example Policy File
















<configuration>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoftcom:asm.v1">
<dependentAssembly>
<assemblyIdentity
name="iAnywhere.Data.SQLAnywhere"
publicKeyToken="f222fc4333e0d400"
/>
<bindingRedirect
oldVersion=“10.0.0.0-10.0.1.1883"
newVersion=“10.0.1.1883"
/>
</dependentAssembly>
</assemblyBinding>
</runtime>
</configuration>
171
Application Deployment: Win32
 Files can go anywhere, but typically in
<%SQLANY10%>\Assembly\V2
 iAnywhere.Data.SQLAnywhere.dll
 policy.iAnywhere.Data.SQLAnywhere.dll
• Register with gacutil.exe (shipped with .NET)
 dbdata10.dll
 dblgen10.dll
• No registration required
172
Application Deployment: Windows CE
 One iAnywhere.Data.SQLAnywhere.dll for all CE platforms
•
•
•
•
But, separate versions for .NET 1.x and 2.0
Deploy to the Windows or application directory
Visual Studio.NET will deploy automatically
Make sure to use the CE version of the DLLs!
 Separate dbdata10.dll for each CE platform
• In %SQLANY10%\ce\xxx
• Can go in Windows directory or your application’s directory on the device
 Policy files are not supported by .NET Compact Framework
• .NET will automatically use newest version of
iAnywhere.Data.SQLAnywhere.dll that it finds
173
Agenda




Introduction to .NET
SQL Anywhere and ADO.NET
Visual Studio Integration
What’s new in SQL Anywhere 10
174
Visual Studio Integration
 Added in 9.0.2 (November 2004)
 Described in white paper
• www.ianywhere.com/downloads
/whitepapers/integrate_vs.pdf
 Adds 3 icons to the toolbar
 Enables developers to be more
productive
 SQL Anywhere Explorer added in
November 2005
175
Visual Studio Integration
 Demo
176
Agenda




Introduction to .NET
SQL Anywhere and ADO.NET
Visual Studio Integration
What’s new in SQL Anywhere 10
177
What’s New in SQL Anywhere 10
 Namespace is renamed
 iAnywhere.Data.SQLAnywhere
•
•
•
•
SAConnection
SACommand
SADataReader
SADataAdapter
 More integration with Visual Studio .NET
• Server Explorer integration
 ADO.NET 2.0
178
Server Explorer Integration
 Demo
179
ADO.NET 2.0
 Released with Visual Studio 2005 in November
 New features
•
•
•
•
•
•
Provider factories
Data source enumeration
Connection string builder
Metadata schemas
Asynchronous commands
Snapshot isolation level
180
SQL Anywhere 10
Data Management and
Query Processing
Glenn Paulley
Senior Manager - Engineering, Sybase iAnywhere
Glenn.Paulley@ianywhere.com
Tuesday, August 8, 2006
8:00 am – 12:00 pm
Performance and Application
Profiling in SQL Anywhere 10
Dan Farrar
Sr. Engineer, Sybase iAnywhere
Dan.Farrar@ianywhere.com
Tuesday August 8, 2006
1:00 pm – 2:30 pm
Plan of attack
 Overview
 Demonstration of automatic application profiling
 Details about application profiling
• Architecture
• User interface
 Demonstration of manual application profiling
• How to set it up
• What to look for
 Other methods of troubleshooting performance
 Questions?
185
Our problem
 Users are complaining about slowness on our
application – what should we do?
• We will use a “sabotaged” version of SalesSim
• Simulates the sales, shipping, and finance departments of a
company
• How do we use the new profiling features of SQL Anywhere
10 to find the boat anchors and restore/improve
performance?
186
Application profiling
 Combines in one tool most of the functionality provided
by:
•
•
•
•
•
Request logging
Procedure profiling
Graphical plan capturing
Index consultant
Statistics monitoring
 Many usage scenarios:
• Debugging application logic
• Troubleshooting specific performance problem
• Leave running in background permanently
187
Application profiling wizard
 SA Plugin for Sybase Central includes the Application
Profiling Wizard
• Handle all details of setting up a profile and analyzing it
• Detect common problems automatically
–
–
–
–
Schema
Indexes
Server and connection options
Application structure
• Make suggestions for improving your application
• Simplest way to use application profiling capabilities
188
Manual application profiling
 Using the application profiling tool manually allows for
more flexibility in controlling what data is analyzed
 High level steps:
•
•
•
•
•
Create and start a tracing database
Configure a tracing session
Run your application
Close (“detach”) the tracing session and save the trace data
Analyze the tracing session using the application profiling
mode in the SQL Anywhere plugin
189
Diagnostic tracing
 The Jasper engine includes new functionality to record
many types of database events:
•
•
•
•
•
•
Connections
SQL statements
Query execution plans
Blocked connections
Deadlocks
Performance counters
 All types of data can be traced from sources both
internal and external to the server
190
Diagnostic architecture
 Traced data can go to any database
• To local database for ease of use
• To a non-local database for performance and to avoid bloat
• For best results, use a dedicated database
 Traced data stored in temporary tables
• New feature in Jasper: shared temporary tables
• No I/O overhead
• At end of logging session, data automatically saved to
permanent storage (base tables)
191
Diagnostic architecture
192
Specifying what to trace
 Trace only for a specified list of objects:
• Users
• Connections
• Procedures, triggers, functions, events
 Trace only under certain circumstances
• When a statement is “expensive”
• When a query differs from its estimated cost
• Every n milliseconds
 Limit volume of trace that is stored
• By disk space
• By length of time
193
Specifying what to trace
 You can mix and match these configurations and
change them on the fly
 For example:
• Trace all plans used by user ‘ALICE’
• Trace all statements used by procedures ‘PR1’ and ‘PR2’
• Trace all query plans in the database for queries that take
more than 20 seconds
 You can use the default tracing levels (low, medium,
high) as a template
• The tracing wizard in the SA Plugin will give you this choice
• Manually, using the sa_set_tracing_level() procedure
194
Controlling tracing manually
 sa_set_tracing_level()
 ATTACH TRACING TO ‘connstr’
[LIMIT {HISTORY nnn{MINUTES|HOURS|DAYS}}
| {SIZE nnn{MB|GB}}]
 DETACH TRACING {WITH|WITHOUT} SAVE
 REFRESH TRACING LEVELS
195
The sa_diagnostic_tracing_levels table
 Scope – what objects are we interested in?
• The whole database?
• A specific procedure, user, connection, or table?
 Type – what type of data are we interested in?
• SQL statements?
• Query plans?
• Information about blocks, deadlocks, or statistics
 Condition – under what conditions should we capture
this data?
• Only for expensive or misestimated queries?
196
Specifying what to trace
197
Controlling tracing with the SA Plugin
 The Tracing wizard is accessible by right-clicking on the
database object
• First, choose basic tracing level – it acts as a template
• Then, add or remove specific tracing entries
• Next, if you need to create a tracing database, create it and
start it on a database server
• Finally, specify where the trace is to be sent, and how much
data to store
198
Tracing databases
199
Saving a tracing session
 When finished tracing, the tracing session can be
stopped (detached):
• In the SA plugin, right-click the database object
• Manually, use the DETACH TRACING statement
 Detaching without saving will leave the data in the
temporary tables in the tracing database
• It can later be saved using the sa_save_trace_data()
procedure
 Detaching with save will permanently store the data
200
Analysis of traced data
 Can be viewed / queried in real time during trace
• Using DBISQL or custom scripts, issue queries against the
sa_tmp_diagnostic_* tables
 Once saved, a tracing session is analyzed using
Application Profiling mode in SA Plugin
• Provides multiple views of traced data
– Allows “drill-down” to see more detail about a specific entry
• Graphical correlation of performance statistics with
statements that were active at the time
• Automatic detection of common performance problems
201
Replay of server state
 Tracing captures optimizer state as queries are
executed
• Captures cache contents, table sizes, option settings, etc.
• Allows server to recreate the optimizer state for queries in
the trace
– Not foolproof (because of changing statistics)
• Can be used to see the graphical plan used by the server
when only SQL text was traced
• Lets Index Consultant make higher-quality recommendations
• Works even if tracing sent to another database
– Allows Index Consultant to run offline on another server
202
Status panel
 If the trace was created as part of the Application
Profiling Wizard:
• Shows a summary of what was captured
• Performance recommendations are automatically generated
and available on the Recommendations panel
 If you created a tracing session manually:
• Shows all tracing sessions stored in a database
• Allows you to generate recommendations
203
Summary panel
 Gives a high-level view of SQL statements captured by the tracing
session
 “Similar” statements are grouped together
• For each statement a signature is computed
• For queries, insert, update, and delete statements, statements are
similar when they involve the same tables and columns
• Other statements are grouped by type (for example, all CREATE
TABLE statements are similar)
 From this view, you can determine which statements are most
expensive, either because:
• They are expensive individually, or
• They are cheap individually but executed many times
204
Details panel
 Shows low-level details about all SQL statements
captured in the trace
• Start time is the time the statement began execution
• Duration is the amount of time spent by the server
processing the request – all statements have a minimum
reported duration of 1ms
• For cursors, time the cursor was closed
• For compound statements, shows line number and
procedure name (if available)
• Text plan is always captured at optimization time
205
Statement details
 Right click on a statement to obtain more details about it
• User that executed it
• SQL error code, if any
• SQL text
– If the statement was captured as it was executed, the text will
be the original text
– If the statement was captured later (because it met some
condition), it will be reconstructed from the parse tree
– Reconstructed statements may not be identical to the original
statements
206
Query details
 Right clicking on a query from the Details view will show
both statement and query details
 Query details include
•
•
•
•
Numbers of each type of fetch (forward, reverse, absolute)
Time to fetch first row
Text plan captured at execution time
Graphical plan representation
– May be the graphical plan at execution time
– May be a best guess at the execution plan, based on the
conditions in the server – compare a guessed graphical plan to
the text plan before relying on it
207
Blocking panel
 Shows connections that were blocked
• What statement was the connection executing when it was
blocked
• What connection blocked it
• How long did the block last
• Right click to see more details about either connection
involved in a block
208
Deadlock panel
 Shows deadlock events that were traced
• Displays a graphical representation of which connections
waited on each other
• Shows which connection was rolled back
• If available (that is, if tracing was attached to the local
database), shows the primary key of each row that was
blocked on
209
Statistics panel
 Shows a graphical representation of performance
counters captured
• Multiple statistics can be viewed, but only for one connection
at a time
• You are often interested in changes in a statistic (a “knee” in
a graph) – “Show Statements” button will filter the list of
statements in the Details panel to just those that fit on the
visible portion of the graph
210
Index consultant
 Index consultant can be invoked
• on the entire database
• on individual queries from the Details panel
 It is run automatically when application
recommendations are generated
• But it generates more details when run manually
211
Other tools for troubleshooting performance
 New properties for performance monitoring
 Almost all of the old methods of troubleshooting
performance are available in SQL Anywhere 10
• There are specific circumstances in which the legacy
methods may be the best approach
212
ApproximateCPUTime
 Connection-level property – CPU time accumulated by
this connection
 Reasonably accurate most of the time – but still an
approximation
 Each CPU contributes to the counter – thus if two
connections are maxing out two CPUs for one second,
each will have an ApproximateCPUTime value of 1.0
 Use to determine what connection may need to be
dropped if the server is dragging (but be careful!)
 Best viewed from DBConsole
213
Request logging
 Stores SQL text of all requests
 Enable in two ways:
• -zr command line switch (with -zo to redirect output to a
file)
• sa_server_option( ‘RequestLogging’, ‘all’ )
 Additional switches let you store data in a cyclical series
of files to limit the maximum captured data
 Probably deprecated in future releases
214
Procedure profiling
 View the times and execution counts of stored
procedures
 This feature is now part of application profiling mode in
the SA Plugin
 Can be used manually from DBISQL
• sa_server_option(‘ProcedureProfiling’,‘on’)
• Analyse with sa_procedure_profile_summary() and
sa_procedure_profile() procedures
 Useful for rapid tuning of procedures – it is easy to
change the procedure definitions on the fly
215
Improving Performance
with SQL Anywhere 10
Materialized Views
Anil Goel
Sr. Engineer, Sybase iAnywhere
Anil.Goel@ianywhere.com
Tuesday, August 8, 2006
3:00 pm – 4:30 pm