MySQL Performance and Tuning Best Practices Ivan Zoratti Systems Engineering Manager EMEA [email protected] - http://izoratti.blogspot.com April 2008

Agenda 2 non-tech slides on MySQL MySQL Server Architecture and Technology Understanding the Query Cache EXPLAIN and query plans Schema and Modelling hints Indexing Strategies Monitoring and Benchmarking

Thanks to Jay Pipes for providing most of the material for this webinar http://jpipes.com Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

2

Overview of MySQL

• • • • • •

MySQL AB - Founded in 1995 and now part of Sun Microsystems 11 million product installations 50,000 downloads each day - 70,000 peaks after the acquisition Over 9 million downloads of 5.0 to date Dramatically reduces TCO of database management Bundled by hundreds of SW and HW companies

Be the best online database

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

3

MySQL Customers Web

Travel

Copyright 2008 Sun Microsystems

Retail

Telco

OEM/ISV

MySQL - The Online Database of the 3rd Millennium

4

MySQL 5 Performance Stored Procedures

5

Ease of Use

Reliability 5

SQL Mode Triggers

Cluster query push down

Information Schema

Views

Query optimisations

Cursors

Precision Math

Archive Engine

Enhanced GUI Tools

Distributed Transactions

InnoDB storage

5

Instance Manager

Migration Toolkit

Increased object support

5.1

5.1

5.1

Table/Index Partitioning Full-Text Index Improvements Archive Engine Improvements

Row-Based Replication

Faster ALTER TABLE

Disk-based Cluster

Faster ADD/DROP Index

Replication for Cluster

Parallel Data Import

Federated Engine Txn

XML/XPath Support Task Scheduler Storage Engine Plug-in API

New Load Testing Utility MyISAM Memory Option New Process/SQL Diagnostics

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

5

MySQL Enterprise & Pluggable Storage Engine Architecture

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

6

Query Cache

• • • •

Very efficient with high persistency data Invalidated by any write on one of the tables in the query Queries must be identical Not used with:

• •

Subqueries In stored routines and functions

• SELECT SQL_CACHE • SELECT SQL_NO_CACHE 5•.1 Available also for Prepared Statements Copyright 2008 Sun Microsystems

• query_cache_size • 0 to disable

• query_cache_limit •

1MB default

• Qcache_hits /

Qcache_inserts

• Qcache_lomem_ prunes

MySQL - The Online Database of the 3rd Millennium

7

Query Cache

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

8

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information

+----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

9

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Unique ID within the query +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

10

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Type of query

+----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

11

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Table to which the row refers +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

12

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Join type: system, const, eq_ref, ref, fulltext, ref_or_null, index_merge, unique_subquery, index_subquery, range, index, ALL +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

13

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information The set of keys to choose from +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

14

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information The chosen key

+----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

15

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Comparison to columns or constants +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

16

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Rows MySQL believes it must examine +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

17

Let me EXPLAIN... EXPLAIN is the best way to analyse your application queries, tune them and increase performance • EXPLAIN works only with SELECTS, not with other commands • EXPLAIN EXTENDED add additional information Additional information

+----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | filtered | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | 100.00 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+----------+-------------+

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

18

Index Column Orders

mysql> show create table t1\G *************************** 1. row *************************** Table: t1 Create Table: CREATE TABLE `t1` ( `c1` int(10) unsigned NOT NULL, `c2` int(10) unsigned NOT NULL, PRIMARY KEY (`c1`,`c2`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> EXPLAIN SELECT c1, COUNT(*) FROM t1 GROUP BY c1; +----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ | 1 | SIMPLE | t1 | index | NULL | PRIMARY | 8 | NULL | 23 | Using index | +----+-------------+-------+-------+---------------+---------+---------+------+------+-------------+ 1 row in set (0.00 sec) mysql> EXPLAIN SELECT c2, COUNT(*) FROM t1 GROUP BY c2; +----+-------------+-------+-------+---------------+---------+---------+------+------+----------------------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------+---------------+---------+---------+------+------+----------------------------------------------+ | 1 | SIMPLE | t1 | index | NULL | PRIMARY | 8 | NULL | 23 | Using index; Using temporary; Using filesort | +----+-------------+-------+-------+---------------+---------+---------+------+------+----------------------------------------------+ 1 row in set (0.00 sec) mysql>

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

19

Index Merge mysql> SHOW CREATE TABLE t2\G *************************** 1. row *************************** Table: t2 Create Table: CREATE TABLE `t2` ( `c1` int(11) NOT NULL, `c2` int(11) NOT NULL, KEY `c1` (`c1`), KEY `c2` (`c2`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 1 row in set (0.00 sec) mysql> EXPLAIN SELECT * FROM t2 WHERE c1 = 10 OR c2 = 5; +----+-------------+-------+-------------+---------------+-------+---------+------+------+---------------------------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+-------------+---------------+-------+---------+------+------+---------------------------------+ | 1 | SIMPLE | t2 | index_merge | c1,c2 | c1,c2 | 4,4 | NULL | 2 | Using union(c1,c2); Using where | +----+-------------+-------+-------------+---------------+-------+---------+------+------+---------------------------------+ 1 row in set (0.00 sec) mysql> EXPLAIN SELECT * FROM t2 WHERE c1 = 10 AND c2 = 5; +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+ | id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra | +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+ | 1 | SIMPLE | t2 | ref | c1,c2 | c1 | 4 | const | 1 | Using where | +----+-------------+-------+------+---------------+------+---------+-------+------+-------------+ 1 row in set (0.00 sec) mysql>

• • •

intersection - c1= X AND c2 = Y union - c1= X OR c2 = Y sort_union - c1 < X OR c2 > Y Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

20

How bad is Denormalisation?

• It’s a common practice in Data Warehouse and analytical schemas • Can significantly reduce the number of joins, hence it can increase performance

Fewer joins VS bigger tables Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

21

Multi-pass SQL • Temporary tables and fewer joins can help the optimizer and sensibly reduce the execution time

STEP 1: - Create Temp Result Table - Create Temp Intermediary Tables

• Perfect match:

STEP 2: - Create single column results

– Stored procedures – MEMORY Storage Engine

Copyright 2008 Sun Microsystems

STEP 3: - Combine the results together

MySQL - The Online Database of the 3rd Millennium

22

Partitioning • Vertical Partitioning

– 1:1 tables to reduce the size of rows, tables and indexes – Optimise the use of buffers and internal data structures

• Horizontal Partitioning

– 1 table split in multiple tables with different rows – Can be used on different servers with sharding

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

23

System Partitioning • Partition type – Range – List – Hash – Key

• Subpartitioning – by hash or key

• Pruning – The partitioning schema is recognised by the optimizer – Use EXPLAIN PARTITIONS for details

• Partition administration – DROP, REMOVE, ADD, COALESCE, REORGANIZE are fully implemented Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

24

Partition Mapping Tables SALES_Q1_2007 PMT TABLE +------------+-------------------+ | QUARTER_ID | PBTNAME | +------------+-------------------+ | 20071 | SALES_Q1_2007 | | 20072 | SALES_Q2_2007 | | 20073 | SALES_Q3_2007 | | 20074 | SALES_Q4_2007 | | 20081 | SALES_Q1_2008 | | 20082 | SALES_Q2_2008 | | 20083 | SALES_Q3_2008 | | 20084 | SALES_Q4_2008 | +------------+-------------------+

SALES_Q2_2007

SALES_Q4_2008

EXAMPLE: LU_DAY

• Call Stored procedures with Prompted value (for

LU_MONTH LU_QUARTER

example Year) • Use Prepared statements to build the query and fill temporary tables • Retrieve the result

LU_YEAR

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

25

MySQL Enterprise

Server

• MySQL Enterprise Server • Monthly Rapid Updates • Quarterly Service Packs • Hot Fix Program • Extended End-of-Life

Monitor

• Global Monitoring of All Servers • Web-Based Central Console • Built-in Advisors • Expert Advice • Specialized Scale-Out Help

Support

• 24 x 7 x 365 Production Support • Web-Based Knowledge Base • Consultative Help • Bug Escalation Program

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

26

MySQL Enterprise Monitor • • • • •

Single, consolidated view into entire MySQL environment Customizable rules-based monitoring and alerts Identifies problems before they occur Reduces risk of downtime Makes it easier to scale-out without requiring more DBAs “Virtual MySQL DBA” Assistant

Copyright 2008 MySQL AB

The Online Database of the 3rd Millennium

27

MySQL Enterprise Monitor Advisors

Best Practice Advisors Security • Protects MySQL Servers • Uncovers Security loopholes

Schema • Helps DBA design better databases • Uncovers Security loopholes

Administration • Helps DBA better manage database processes • Suggests improvements for smoother operations

Performance • Makes suggestions for improving database speed • Identifies potential performance bottlenecks

Memory Usage

Replication • Makes suggestions for improving replication design • Identifies potential replication bottlenecks

• Ensures optimum use of memory • Minimizes disk access for read intensive systems.

Advisors provide 100+ rules designed to enforce MySQL Best Practices.

Provide “Virtual MySQL DBA” expertise

Copyright 2008 MySQL AB

The Online Database of the 3rd Millennium

28

Automated Performance Advisors Proactively monitor MySQL systems over time for: • Optimal Query/Thread/Table cache settings • Code Tuning Opportunities • Optimal Buffer Size/sys Ram ratio • Innodb Performance Bottlenecks • Inefficient use of indexes • Others…

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

29

Benchmarks

• • • • • •

Provide a track record of changes Baseline is the starting point Testing done iteratively Deltas between tests show difference that the change(s) made Stress/Load testing of application and/or database Harness or framework useful to automate many benchmark tasks

• •

BUT... Can be very misleading if done wrong Need to be able to read results correctly

• • •

Typical Errors Testing with 1GB size with 100G in production Using uniform distribution • “Harry Potter” ordered as frequent as Zulu dictionary Testing in single user scenario

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

30

Benchmarking Tips

• • •

Always give yourself a target Record everything



Schema dump

• •

my.cnf files hardware/os configuration files as needed

Isolate the problem

• • • •

Shut down unnecessary programs Stop network traffic to machine Disable the query cache Change one thing at a time

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

31

Benchmarks

• “Internal” Benchmarks • Comparisons between versions and storage engines • “External” Benchmarks • • • •

TPC - Transaction Processing Perfiormance Council



TPC-C and TPC-H

!

http://www.tpc.org

OSDL DBT2 and DBT3 - Open Source Dev. Labs

• • •

http://osdldbt.sourceforge.net/ http://sourceforge.net/projects/osdldbt http://sourceforge.net/project/showfiles.php?group_id=52479



http://www.solidtech.com/en/developers/CarrierGrade/tm1.asp



SpecJAppServer2004 - Java Application Server

TM1 - Simulate an HLR (Home Locator Register) DB Spec - Standard Performance Evaluation Corporation !

http://www.spec.org/osg/jAppServer2004

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

32

The MySQL Benchmark Toolbox

• • •

Apache bench - ap http_load JMeter

• • •

sysbench mysqlslap BENCHMARK()

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

33

More Resources Available • White Papers • MySQL Cluster & Dolphin Express High Scalability DBT2 Benchmarks on nextgeneration Intel Xeon processors • www.mysql.com/why-mysql/benchmarks/ • Consulting • MySQL HA Solution • MySQL Performance Tuning & Optimisation • www.mysql.com/consulting/ • Training • MySQL High Availability • MySQL Cluster for High Availability • www.mysql.com/training/

Copyright 2008 Sun Microsystems

MySQL - The Online Database of the 3rd Millennium

34

MySQL Performance and Tuning Best Practices

Thank You Ivan Zoratti Systems Engineering Manager, EMEA [email protected] - http://izoratti.blogspot.com

Ivan Zoratti Systems Engineering Manager, EMEA

New Load Testing Utility. MyISAM Memory Option. New Process/SQL Diagnostics. 5.1. 5. SQL Mode. Triggers. Views. Precision Math. Distributed Transactions ...... Customizable rules-based monitoring and alerts. • Identifies problems before they occur. • Reduces risk of downtime. • Makes it easier to scale-out without.

2MB Sizes 2 Downloads 170 Views

Recommend Documents

Solution Selling in EMEA
Dec 6, 2009 - To understand the role of Pc City's paid and owned media (website) in driving sales. • To optimise the marketing and media mix to generate greater revenue from ..... 20. Drivers of Branded search queries. In addition to driving web tr

Solution Selling in EMEA
Possibility to differentiate advertising stimuli from market to market in order to isolate the specific impact of your media campaign on in-store sales. O2S. Geo Lab.

Google Business Intern EMEA 2016/17
We offer a range of internships across EMEA and durations and start dates vary according to project and location. Our internships expose students to the ...

MANAGER (ENGINEERING) TSPSC Syllabus and Exam pattern.pdf ...
Page 1 of 9. 10. ANNEXURE-III. SCHEME AND SYLLABUS FOR RECRUITMENT TO THE POSTS OF MANAGER. (ENGINEERING) IN HYDERABAD METROPOLITAN WATER SUPPLY AND SEWERAGE. BOARD. Scheme of Examination. No. of. Questions. Duration. (Minutes). Maximum. Marks. Part:

pdf-1447\photovoltaic-systems-engineering-electronic-engineering ...
Try one of the apps below to open or edit this item. pdf-1447\photovoltaic-systems-engineering-electronic-engineering-by-cram101-textbook-reviews.pdf.

Information Systems Manager 2017.pdf
Information Systems Manager 2017.pdf. Information Systems Manager 2017.pdf. Open. Extract. Open with. Sign In. Main menu. Displaying Information Systems ...

Information Systems Manager 2017.pdf
Sign in. Loading… Whoops! There was a problem loading more pages. Retrying... Whoops! There was a problem previewing this document. Retrying.

Web Content Manager - ICARDA Corporate Systems
Mar 8, 2016 - email newsletters, and online outreach campaigns, ... Coordinate web, online and social media projects across ... Basic Adobe Photoshop skills.

Web Content Manager - ICARDA Corporate Systems
Closing date: 08 March 2016. Main purpose of the position ... Coordinate web, online and social media projects across departments. •. Maintain a consistent look ...

BOLD Immersion EMEA 2018 FAQs Services
Mar 19, 2018 - In addition, Google will reimburse qualifying successful applicants reasonable meals and social event expenses related to the BOLD Immersion program, subject to a cap as notified to applicants by Google. For the avoidance of doubt succ

Cognitive Systems Engineering
[FREE] Cognitive Systems Engineering. Cognitive ... US/Data/Engineering-Transportation ... deep and wide-ranging discussion of human-computer interacBy A.

BOLD Immersion EMEA 2018 FAQs - Services
to get a rare glimpse into the business side of the technology industry, a chance to grow your peer network, and exposure and insight ... with the Criteria by an internal panel of Google team members and the best 65 applications (as assessed by the .

IVAN CARLOS METZ.pdf
Sign in. Loading… Whoops! There was a problem loading more pages. Retrying... Whoops! There was a problem previewing this document. Retrying.

201708 SRECon EMEA 2017- Monitoring Cloudflare's planet-scale ...
201708 SRECon EMEA 2017- Monitoring Cloudflare's planet-scale edge network with Prometheus.pdf. 201708 SRECon EMEA 2017- Monitoring Cloudflare's ...

SAPTECHED 2015 EMEA - Building Fiori Apps.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. SAPTECHED ...

Download Systems Engineering and Analysis (Prentice Hall International Series in Industrial & Systems Engineering) Full Books
Systems Engineering and Analysis (Prentice Hall International Series in Industrial & Systems Engineering) Download at => https://pdfkulonline13e1.blogspot.com/013221735X Systems Engineering and Analysis (Prentice Hall International Series in Indu

Ivan Krgovic - Jelena Od Bosne.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. Ivan Krgovic ...

Ivan Krgovic - Jelena Od Bosne.pdf
There was a problem previewing this document. Retrying... Download. Connect more apps... Try one of the apps below to open or edit this item. Ivan Krgovic ...