Here, we consider Database bottleneck as a problem and provide solution for some of common problems.

Similar documents
MySQL Performance Tuning 101

Performance Tuning. Chapter 25

Performance improvements in MySQL 5.5

Best Practices for MySQL Scalability. Peter Zaitsev, CEO, Percona Percona Technical Webinars May 1, 2013

MySQL Database Scalability

MySQL Performance Optimization and Troubleshooting with PMM. Peter Zaitsev, CEO, Percona Percona Technical Webinars 9 May 2018

Jyotheswar Kuricheti

MySQL Performance Optimization and Troubleshooting with PMM. Peter Zaitsev, CEO, Percona

IT Best Practices Audit TCS offers a wide range of IT Best Practices Audit content covering 15 subjects and over 2200 topics, including:

MySQL for Database Administrators Ed 4


Accelerate MySQL for Demanding OLAP and OLTP Use Case with Apache Ignite December 7, 2016

What's new in MySQL 5.5? Performance/Scale Unleashed

Conceptual Modeling on Tencent s Distributed Database Systems. Pan Anqun, Wang Xiaoyu, Li Haixiang Tencent Inc.

Scott Meder Senior Regional Sales Manager

MySQL Performance Tuning

Practical MySQL Performance Optimization. Peter Zaitsev, CEO, Percona July 02, 2015 Percona Technical Webinars

Typical Issues with Middleware

Evaluating Cloud Storage Strategies. James Bottomley; CTO, Server Virtualization

<Insert Picture Here> Looking at Performance - What s new in MySQL Workbench 6.2

DATACENTER SERVICES DATACENTER

On BigFix Performance: Disk is King. How to get your infrastructure right the first time! Case Study: IBM Cloud Development - WW IT Services

MySQL Performance Tuning

Optimizing Testing Performance With Data Validation Option

Switching to Innodb from MyISAM. Matt Yonkovit Percona

ArcGIS Enterprise Performance and Scalability Best Practices. Andrew Sakowicz

Migrating to Aurora MySQL and Monitoring with PMM. Percona Technical Webinars August 1, 2018

Oracle Database and Application Solutions

A guide for assembling your Jira Data Center team

HP Storage Software Solutions

AKF Partners Case Study Engagement Type: Long Term Interim CTO Role Industry: Online Marketing Analytics

B.H.GARDI COLLEGE OF ENGINEERING & TECHNOLOGY (MCA Dept.) Parallel Database Database Management System - 2

DB2 Performance Essentials

Resource Containers. A new facility for resource management in server systems. Presented by Uday Ananth. G. Banga, P. Druschel, J. C.

Oktober 2018 Dell Tech. Forum München

Best Practices. Deploying Optim Performance Manager in large scale environments. IBM Optim Performance Manager Extended Edition V4.1.0.

Identify and Eliminate Oracle Database Bottlenecks

INFORMATICA PERFORMANCE

HPE Datacenter Care for SAP and SAP HANA Datacenter Care Addendum

The Care and Feeding of a MySQL Database for Linux Adminstrators. Dave Stokes MySQL Community Manager

IBM Spectrum NAS, IBM Spectrum Scale and IBM Cloud Object Storage

product overview CRASH

Abstract. The Challenges. ESG Lab Review InterSystems IRIS Data Platform: A Unified, Efficient Data Platform for Fast Business Insight

Delegates must have a working knowledge of MariaDB or MySQL Database Administration.

SOFTWARE PERFORMANCE TESTING TIPS WITH JMETER

Technology Challenges for Clouds. Henry Newman CTO Instrumental Inc

Integrate MATLAB Analytics into Enterprise Applications

MySQL for Database Administrators Ed 3.1

Buffer Management for XFS in Linux. William J. Earl SGI

WELCOME. Unterstützung von Tuning- Maßnahmen mit Hilfe von Capacity Management. DOAG SIG Database

InnoDB: Status, Architecture, and Latest Enhancements

AtoS IT Solutions and Services. Microsoft Solutions Summit 2012

Oracle Hyperion Profitability and Cost Management

Percona Server for MySQL 8.0 Walkthrough

Veritas Volume Replicator Option by Symantec

MySQL Performance Tuning 101

How to Stop Hating MySQL: Fixing Common Mistakes and Myths

An Oracle White Paper April 2010

[TITLE] Virtualization 360: Microsoft Virtualization Strategy, Products, and Solutions for the New Economy

Power of the Portfolio. Copyright 2012 EMC Corporation. All rights reserved.

Fusion iomemory PCIe Solutions from SanDisk and Sqrll make Accumulo Hypersonic

A Cloud WHERE PHYSICAL ARE TOGETHER AT LAST

Practical MySQL Performance Optimization. Peter Zaitsev, CEO, Percona July 20 th, 2016 Percona Technical Webinars

Hardware Intel Core I5 and above 4 GB RAM LAN Connectivity 500 MB HDD (Free Space)

Optimizing GIS Services: Scalability & Performance. Firdaus Asri

MySQL Cluster Ed 2. Duration: 4 Days

Course 40045A: Microsoft SQL Server for Oracle DBAs

An Oracle White Paper May Oracle VM 3: Overview of Disaster Recovery Solutions

OpenWorld 2018 SQL Tuning Tips for Cloud Administrators

PostgreSQL migration from AWS RDS to EC2

System Characteristics

Predictive Insight, Automation and Expertise Drive Added Value for Managed Services

Backup & Recovery on AWS

J2EE DIAGNOSING J2EE PERFORMANCE PROBLEMS THROUGHOUT THE APPLICATION LIFECYCLE

Aurora, RDS, or On-Prem, Which is right for you

Historical Collection Best Practices. Version 2.0

E-Guide DATABASE DESIGN HAS EVERYTHING TO DO WITH PERFORMANCE

IT Consulting and Implementation Services

Amazon Aurora Relational databases reimagined.

IBM EXAM QUESTIONS & ANSWERS

Architecture and Design of MySQL Powered Applications. Peter Zaitsev CEO, Percona Highload Moscow, Russia 31 Oct 2014

Increasing Performance for PowerCenter Sessions that Use Partitions

Scalability Testing with Login VSI v16.2. White Paper Parallels Remote Application Server 2018

Performance of popular open source databases for HEP related computing problems

Advanced ODBC and JDBC Access to Salesforce Data

Core Services for ediscovery Perfection

CHAPTER. The Role of PL/SQL in Contemporary Development

Analysis of Derby Performance

Next Generation End User Experience Management:

Diagnostics in Testing and Performance Engineering

Sage 300 ERP. Compatibility Guide Version Revised: Oct 1, Version 6.0 Compatibility Guide i

What s New in MySQL 5.7 Geir Høydalsvik, Sr. Director, MySQL Engineering. Copyright 2015, Oracle and/or its affiliates. All rights reserved.

MongoDB and Mysql: Which one is a better fit for me? Room 204-2:20PM-3:10PM

Deploy a High-Performance Database Solution: Cisco UCS B420 M4 Blade Server with Fusion iomemory PX600 Using Oracle Database 12c

Using MySQL in a Virtualized Environment. Scott Seighman Systems Engineer Sun Microsystems

Networking Strategy and Optimization Services (NSOS) 2010 IBM Corporation

DATABASE SCALABILITY AND CLUSTERING

Mind your Business We manage your IT

Nicholas Dritsas Principal Program Manager Microsoft Corporation Microsoft Corporation. All rights reserved

Major travel and hospitality organizations often have

Transcription:

Enhancing EHR Performance for Better Business Outcomes Business Problem An EHR with high volume of data and users often complains about performance glitches in certain sections of an application. Different types of performance issues encountered from end customers are: Slowness in application on executing a particular business scenario Slowness of the application during peak hours Poor response time with the application when number of concurrent users increases The Analysis Performance Bottleneck A bottleneck is a point in a system where the flow of data goes down or the data flow is reduced. There is not enough data handling capacity to handle the current amount of data. A bottleneck can occur in an application where there is excessive usage for internal server resources. The common performance bottleneck factors are; CPU: CPUs can handle millions of instructions and calculations, but performance suffers when the numbers of operations exceeds the capacity. When CPU usage is greater than 75%, it will slow the entire system. Memory: Performance bottlenecks related to memory is due to poorly designed software (memory leaks) or other system flaws that leads to memory issues. I/O: I/O Wait is the percentage of time the processors are waiting on the disk to perform read or write operations. Network: The network bottleneck is a commonly blamed source of performance bottlenecks, but it is rarely found. It happens only when the size of bandwidth is less. Database: Database bottleneck can be caused due to poor DB schema, inefficient queries written within an application. DB that is not configured properly will also consume a lot of CPU and memory space. Here, we consider Database bottleneck as a problem and provide solution for some of common problems. Tools Used In order to understand the application transactions that are slower and the reason for the performance degradation, two tools JMeter and NewRelic are used. Jmeter- an Open Source testing software, is used to simulate heavy load on servers to analyze the application behavior Page 1 of 7

under heavy load. New Relic- application performance tool is used to track the application response time, most time consuming transactions and database calls, which help us in identifying the problematic areas in the application to be fine-tuned. It also provides CPU Usage, Physical memory utilization, Disk I/O and Network I/O utilization. Identification of the performance issue The following steps are used to analyse the performance issues using Jmeter and NewRelic. 1. Setup JMeter in client machine 2. Record the clinical scenarios which needs to be fine-tuned for performance 3. Setup NewRelic in the EHR server and start the process. 4. Configure JMeter to simulate heavy load with the scenarios captured in (2) 5. Run the scenarios from JMeter 6. NewRelic will keep track of all the transaction details like slowest SQL queries, slowest transactions, application response time, time spent in database calls etc. Sample graph obtained from New Relic with the list of slowest transactions and response time. Page 2 of 7

Another graph from New Relic with details of SQL queries, number of times it is called and the duration. The Solution In this section, some of the common problems that may happen while accessing the database from the application and the proposed solutions are discussed. Database Access Changes N+1 problem Problem: Select N+1 is a data access anti-pattern where the database is accessed in a suboptimal way. While this would still work, it is highly inefficient. Consider the following code parties = Party.limit(10) parties.each do p puts p.address end This code looks fine at the first sight. But the problem lies within the total number of queries executed. The above code executes 1 (to find 10 parties) + 10 (one per each party to load the address) = 11 queries in total. Page 3 of 7

Solution: By using Eager Loading mechanism, we had solved this problem. clients = Party.includes(:address).limit(10) even Project only required columns Problem: Some places of the code had queries which select all the columns of the table if only a few columns were required in the subsequent steps. select * from party; Solution: Removed this unnecessary projection of all table columns and had the query select only required columns. This resulted in a slight performance increase. select id, name from party; Eliminate unnecessary processing Problem: Get all the records from the table and reject the records based on some condition is a time consuming process. It really degrade the application performance. usr = "select * from user"; loop u in usr if u.name == '%xxxxx%' and u.password == obj.encrypt("password") Collect the record; endif end return collected record; Solution: To overcome this issue we had used only join & where clause and retrieved only the required records from the DB. usr = "select * from user where name == '%xxxxx%'; loop u in usr if usr.password == obj.encrypt("password") Collect the record; endif end return collected record; Page 4 of 7

Adding index to Queries: We were also looking for queries that did not use any index and made that query to use an index to increase performance. Database Configuration Changes In addition, as explained earlier some of the bottlenecks can happen because of a poorly configured database. The following are some of the Database configurations that can be finetuned in MySQL. max_allowed_packet thread_cache_size tmp_table_size innodb_buffer_pool_siz e max_connections innodb_log_file_size tmpdir The max_allowed_packet setting determines the maximum size of a single packet. If we use very long BLOB columns or long strings, this setting must be large enough to handle them properly. How many threads the server should cache for reuse. This variable can be increased to improve performance if you have a lot of new connections. The maximum size of internal in-memory temporary tables. It helps to improve the performance if the SQL create temporary table. The size in bytes of the memory buffer InnoDB uses to cache data and indexes of its tables. The default value is 8MB. The larger you set this value; the less Disk I/O is needed to access data in tables. The maximum permitted number of simultaneous client connections. By default, this is 100. This is the size of the commit log files. This is the main tuneable and you will want to set it quite high for performance reasons. By default it is 5MB MySQL writes temporary tables to disk, populates them with intermediate results, and then query them again for the final result. It improves the performance by setting high volume memory partition location Problem: Setting minimum value to max_allowed_packet may cause the performance issue if the SQL returns large number of records. The value should be a multiple of 1024. Before fix: max_allowed_packet=64m innodb_log_file_size=5m innodb_buffer_pool_size=128m Page 5 of 7

After Fix: max_allowed_packet=10240m innodb_log_file_size=128m innodb_buffer_pool_size=2g The Results With help of Jmeter and New Relic, the slowest transactions are identified in the different sections of the EHR. After the analysis of the issues, data access pattern is modified and indexes are introduced. Database configuration is also fine-tuned for better performance. Please refer the graph given below to shows the comparison report of the time taken for transactions before and after the performance fix. As you can see, the performance of the application had increased tremendously after the performance fine tuning. About ViSolve ViSolve, Inc., is a software services and consulting firm with expertise in Healthcare and Cloud. ViSolve is headquartered at San Jose, CA with best in class Development & Support center in Coimbatore, India. ViSolve is committed to provide better healthcare by providing vendor neutral IT services. Page 6 of 7

What we do? Enhancing EHR Performance for Better Business Outcomes Cloud (VMWare, AWS, HP), DB (MongoDB / Hadoop ), Migration, Enterprise Security, Performance, Deployment, Support and monitoring of customer environment with a focus on leading edge technologies Product development, build, QA and support of applications and kernel modules on VMware, HP-UX, Linux platforms 15+ years of experience in Open Source Solutions - Customization, Development and Support; leading contributor to the open source communities including Hadoop, OpenStack, OpenEMR, OSEHRA, Mongo DB, MySQL etc. Why ViSolve? More than 15 years of strategic relationship with Enterprise Customers including Leading System Vendors, Financial Institutions,Healthcare Organizations /Vendors Experience in successfully migrating over 160 healthcare customer environments to cloud with a focus on High Availability, Security, Disaster recovery, Performance and scalability As an extension of your R&D IT team - We Deliver Results of High Quality, On Time and Within Budget Expert Onsite Team & Low cost Offshore Team based in India that works in customer s preferred Time zone No one-size-fits-all solution provider. Customization - Key Differentiator Key Advocate and Contributors of Open Source Communities including Customized Open Source Solutions with leading edge technology Access to a wide Pool of talented Engineers highly skilled in Leading Edge Technologies and extensive knowledge in Healthcare Domain We know our Customers, Partners and Technology inside-out, with clear perspectives on what is most fitting to solve our customer s challenges Avoid Vendor Lock in with Flexible Contractual Models. Competitive SLAs and Response Times, reduces internal cost & complexity and decreases Time to Market To know more about how ViSolve can enhance your IT capabilities, get in touch with us by email at services@visolve.comor call us at +1 (408) 850 2243. Page 7 of 7