SlideShare ist ein Scribd-Unternehmen logo
1 von 22
MYSQL
    Програмист Э.Насанжаргал
MySQL тухай
• 1995 оны 5 сард анх зах зээлд гарсан
• C / C++
• Хөгжүүлэгч нь MySQL AB
• Facebook, Google, Wikipedia …
MySQL versions
MySQL versions
MySQL query бичихэд
анхаарах зүйлс
• Түгээмэл алдаанууд
  • Limit ашиглах
  • Олон давхар Join ашигласан үед бүх баганыг Select хийх
    SELECT * FROM sakila.actor
       INNER JOIN salila.film_actor USING (actor_id)
       INNER JOIN salila.film USING (film_id)
      WHERE sakila.film.title = 'Academy Dinosaur';
MySQL query бичихэд
анхаарах зүйлс
 • Бүх баганыг Select хийх        SELECT *
             • Count(*) => Count(column_name)

 • Unique row
   SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1

 • Order by RAND()
 • ENUM ийг тогтмол тэмдэгттэй vед VARCHAR
Join Decomposition
• SELECT * FROM tag
 JOIN tag_post ON tag_post.tag_id=tag.id
 JOIN post ON tag_post.post_id=post.id
 WHERE tag.tag='mysql';

• SELECT * FROM tag WHERE tag='mysql';
 SELECT * FROM tag_post WHERE tag_id=1234;
 SELECT * FROM post WHERE post.id in
 (123,456,567,9098,8904);
Хэрвээ Join ийг илүү хурдан, ашигтай
ажлуулъя гэвэл
• Query Cache ашиглах
• MyISAM engine – тай хүснэгт ашиглах
• Олон сервер ашиглах
• Join ийг In() солих –   Том хэмжээтэй хүснэгтэнд
Unbuffered query
• mysql_connect("localhost", "php", "alm65z");
   mysql_select_db("phpdb");
   $result = mysql_unbuffered_query("SELECT ID,
 Name FROM conferences;");
    $result = mysql_query("SELECT ID, Name FROM
 conferences;");
   while ($row = mysql_fetch_assoc($result)) {
      extract($row, EXTR_PREFIX_ALL, "conf");
      print "$conf_Namen";
   }
Chopping up a Query
Mysql> DELETE FROM messages WHERE created <
                          DATE_SUB(NOW(),INTERVAL
 3 month)
rows_affected = 0
do{
rows_affected = do_query(

  DELETE FROM messages WHERE created <
    DATE_SUB(NOW(),INTERVAL 3 month) LIMIT 10000
  )
} while rows_affected > 0
Query Cache
// query cache does NOT work
$r = mysql_query("SELECT username FROM user
   WHERE signup_date >= CURDATE()");

// query cache works!
$today = date("Y-m-d");
$r = mysql_query("SELECT username FROM user
   WHERE signup_date >= '$today'");
Index the Search Fields
Mysql> Select count(1) From users Where last_name Like
 ‘a%’; 0.25

Mysql> Alter table ‘users’ Add index(‘last_name’);

Mysql> Select count(1) From users Where last_name Like
 ‘a%’; 0.06
Count == 63285
Index use for Join

SELECT company_name FROM users
  LEFT JOIN companies ON (users.state = companies.state)
  WHERE users.id = 15
 users.state - индекслэгдсэн багана
Procedure Analyse
(max_element, max_memory)
 • SELECT quantity, sale_order_id
  FROM `sale_order_queue`
  PROCEDURE ANALYSE ( 1000000, 256 )
IP Addresses as Unsigned int
 UPDATE users SET ip = INET_ATON
 ('{$_SERVER['REMOTE_ADDR']}') WHERE user_id =15
 192.168.1.100
 INET_NTOA() , ip2long() , long2ip()
Partition
 • CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE)
  ENGINE=INNODB PARTITION BY HASH( MONTH(tr_date) )
  PARTITIONS 6;

 • Partition type
   • Hash
   • Range
   • List
   • Key
Range
Hash
Key
List
Partition ашиглах
  • CREATE TABLE ts1 (
  •      c1 INT,
  •      c2 VARCHAR(20)
  • )
  • PARTITION BY LIST(c1) (
  •      PARTITION p0 VALUES IN (0, 3, 6),
  •      PARTITION p1 VALUES IN (1, 4, 7),
  •      PARTITION p2 VALUES IN (2, 5, 8)
  • );
  • INSERT INTO ts1 VALUES (8, 'mothra');
  •
               c1              c2
               8               mothra
Анхаарал тавьсанд
    Баярлалаа

Weitere ähnliche Inhalte

Was ist angesagt?

Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizDocumentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizEdderson J. Ortiz
 
Simular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariaSimular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariajbersosa
 
Feeds. использование и создание плагинов. Feeds API
Feeds. использование и создание плагинов. Feeds APIFeeds. использование и создание плагинов. Feeds API
Feeds. использование и создание плагинов. Feeds APIAlex S
 
Assalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuuAssalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuuiswan_di
 
Func
FuncFunc
FuncHvqr
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0zfconfua
 
アプリ設定の保存をシンプルに
アプリ設定の保存をシンプルにアプリ設定の保存をシンプルに
アプリ設定の保存をシンプルにsusan335
 
Sumahexavector
SumahexavectorSumahexavector
Sumahexavectorjbersosa
 
Php codigos interfaces fredy guzman cusihunca
Php codigos interfaces   fredy guzman cusihuncaPhp codigos interfaces   fredy guzman cusihunca
Php codigos interfaces fredy guzman cusihuncaTigger_Fred
 
Drupal 8. Movement towards. Susikov Sergey
Drupal 8. Movement towards. Susikov SergeyDrupal 8. Movement towards. Susikov Sergey
Drupal 8. Movement towards. Susikov SergeyADCI Solutions
 

Was ist angesagt? (20)

Simple crudlazarus
Simple crudlazarusSimple crudlazarus
Simple crudlazarus
 
With enter
With enterWith enter
With enter
 
Testování prakticky
Testování praktickyTestování prakticky
Testování prakticky
 
Oop koncepti
Oop konceptiOop koncepti
Oop koncepti
 
Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizDocumentacion edderson callpa_ortiz
Documentacion edderson callpa_ortiz
 
Simular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentariaSimular un next del recordset en php de forma rudimentaria
Simular un next del recordset en php de forma rudimentaria
 
Feeds. использование и создание плагинов. Feeds API
Feeds. использование и создание плагинов. Feeds APIFeeds. использование и создание плагинов. Feeds API
Feeds. использование и создание плагинов. Feeds API
 
Assalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuuAssalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuu
 
Func
FuncFunc
Func
 
Work flowtask
Work flowtaskWork flowtask
Work flowtask
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0
 
アプリ設定の保存をシンプルに
アプリ設定の保存をシンプルにアプリ設定の保存をシンプルに
アプリ設定の保存をシンプルに
 
Sumahexavector
SumahexavectorSumahexavector
Sumahexavector
 
Clase 10 electiva profesional 3 aws rds php y mysql
Clase 10 electiva profesional 3 aws rds php y mysqlClase 10 electiva profesional 3 aws rds php y mysql
Clase 10 electiva profesional 3 aws rds php y mysql
 
Img 0019
Img 0019Img 0019
Img 0019
 
Php codigos interfaces fredy guzman cusihunca
Php codigos interfaces   fredy guzman cusihuncaPhp codigos interfaces   fredy guzman cusihunca
Php codigos interfaces fredy guzman cusihunca
 
Jsoon
JsoonJsoon
Jsoon
 
스프링 JPA 강좌(Spring Data JPA 간단 예제)
스프링 JPA 강좌(Spring Data JPA 간단 예제)스프링 JPA 강좌(Spring Data JPA 간단 예제)
스프링 JPA 강좌(Spring Data JPA 간단 예제)
 
Drupal 8. Movement towards. Susikov Sergey
Drupal 8. Movement towards. Susikov SergeyDrupal 8. Movement towards. Susikov Sergey
Drupal 8. Movement towards. Susikov Sergey
 
Sumahex
SumahexSumahex
Sumahex
 

Andere mochten auch

Day 1
Day 1Day 1
Day 1ETC
 
Засаг.мн - Төрийн цахим хаалга
Засаг.мн - Төрийн цахим хаалгаЗасаг.мн - Төрийн цахим хаалга
Засаг.мн - Төрийн цахим хаалгаSingleton
 
Java script xэрэглээ
Java script xэрэглээ Java script xэрэглээ
Java script xэрэглээ Singleton
 
Day 3 php working with string, number
Day 3   php working with string, numberDay 3   php working with string, number
Day 3 php working with string, numberETC
 
NoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDBNoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDBBattushig Namsraidorj
 
My sql lec2
My sql lec2My sql lec2
My sql lec2ETC
 
Day 4 php working with date and time, array
Day 4   php working with date and time, arrayDay 4   php working with date and time, array
Day 4 php working with date and time, arrayETC
 
User account policy
User account policyUser account policy
User account policyMuuluu
 
Лекц 5
Лекц 5Лекц 5
Лекц 5Muuluu
 
Day 2 php
Day 2   phpDay 2   php
Day 2 phpETC
 

Andere mochten auch (20)

Day 1
Day 1Day 1
Day 1
 
HTML5
HTML5HTML5
HTML5
 
Засаг.мн - Төрийн цахим хаалга
Засаг.мн - Төрийн цахим хаалгаЗасаг.мн - Төрийн цахим хаалга
Засаг.мн - Төрийн цахим хаалга
 
NodeJS
NodeJS NodeJS
NodeJS
 
Coaching
CoachingCoaching
Coaching
 
CSS3
CSS3CSS3
CSS3
 
Java script xэрэглээ
Java script xэрэглээ Java script xэрэглээ
Java script xэрэглээ
 
Computer arch
Computer archComputer arch
Computer arch
 
Day 3 php working with string, number
Day 3   php working with string, numberDay 3   php working with string, number
Day 3 php working with string, number
 
NoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDBNoSQL өгөгдлийн сан. MongoDB
NoSQL өгөгдлийн сан. MongoDB
 
Сүлжээ
СүлжээСүлжээ
Сүлжээ
 
database 10
database 10database 10
database 10
 
My sql lec2
My sql lec2My sql lec2
My sql lec2
 
Day 4 php working with date and time, array
Day 4   php working with date and time, arrayDay 4   php working with date and time, array
Day 4 php working with date and time, array
 
User account policy
User account policyUser account policy
User account policy
 
Лекц 5
Лекц 5Лекц 5
Лекц 5
 
database 7-8
database 7-8database 7-8
database 7-8
 
C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1C++ vndsen oilgolt хичээл 1
C++ vndsen oilgolt хичээл 1
 
Day 2 php
Day 2   phpDay 2   php
Day 2 php
 
Database 6
Database 6Database 6
Database 6
 

MySQL Э.Насанжаргал

  • 1. MYSQL Програмист Э.Насанжаргал
  • 2. MySQL тухай • 1995 оны 5 сард анх зах зээлд гарсан • C / C++ • Хөгжүүлэгч нь MySQL AB • Facebook, Google, Wikipedia …
  • 5. MySQL query бичихэд анхаарах зүйлс • Түгээмэл алдаанууд • Limit ашиглах • Олон давхар Join ашигласан үед бүх баганыг Select хийх SELECT * FROM sakila.actor INNER JOIN salila.film_actor USING (actor_id) INNER JOIN salila.film USING (film_id) WHERE sakila.film.title = 'Academy Dinosaur';
  • 6. MySQL query бичихэд анхаарах зүйлс • Бүх баганыг Select хийх SELECT * • Count(*) => Count(column_name) • Unique row SELECT 1 FROM user WHERE state = 'Alabama' LIMIT 1 • Order by RAND() • ENUM ийг тогтмол тэмдэгттэй vед VARCHAR
  • 7. Join Decomposition • SELECT * FROM tag JOIN tag_post ON tag_post.tag_id=tag.id JOIN post ON tag_post.post_id=post.id WHERE tag.tag='mysql'; • SELECT * FROM tag WHERE tag='mysql'; SELECT * FROM tag_post WHERE tag_id=1234; SELECT * FROM post WHERE post.id in (123,456,567,9098,8904);
  • 8. Хэрвээ Join ийг илүү хурдан, ашигтай ажлуулъя гэвэл • Query Cache ашиглах • MyISAM engine – тай хүснэгт ашиглах • Олон сервер ашиглах • Join ийг In() солих – Том хэмжээтэй хүснэгтэнд
  • 9. Unbuffered query • mysql_connect("localhost", "php", "alm65z"); mysql_select_db("phpdb"); $result = mysql_unbuffered_query("SELECT ID, Name FROM conferences;"); $result = mysql_query("SELECT ID, Name FROM conferences;"); while ($row = mysql_fetch_assoc($result)) { extract($row, EXTR_PREFIX_ALL, "conf"); print "$conf_Namen"; }
  • 10. Chopping up a Query Mysql> DELETE FROM messages WHERE created < DATE_SUB(NOW(),INTERVAL 3 month) rows_affected = 0 do{ rows_affected = do_query( DELETE FROM messages WHERE created < DATE_SUB(NOW(),INTERVAL 3 month) LIMIT 10000 ) } while rows_affected > 0
  • 11. Query Cache // query cache does NOT work $r = mysql_query("SELECT username FROM user WHERE signup_date >= CURDATE()"); // query cache works! $today = date("Y-m-d"); $r = mysql_query("SELECT username FROM user WHERE signup_date >= '$today'");
  • 12. Index the Search Fields Mysql> Select count(1) From users Where last_name Like ‘a%’; 0.25 Mysql> Alter table ‘users’ Add index(‘last_name’); Mysql> Select count(1) From users Where last_name Like ‘a%’; 0.06 Count == 63285
  • 13. Index use for Join SELECT company_name FROM users LEFT JOIN companies ON (users.state = companies.state) WHERE users.id = 15 users.state - индекслэгдсэн багана
  • 14. Procedure Analyse (max_element, max_memory) • SELECT quantity, sale_order_id FROM `sale_order_queue` PROCEDURE ANALYSE ( 1000000, 256 )
  • 15. IP Addresses as Unsigned int UPDATE users SET ip = INET_ATON ('{$_SERVER['REMOTE_ADDR']}') WHERE user_id =15 192.168.1.100 INET_NTOA() , ip2long() , long2ip()
  • 16. Partition • CREATE TABLE ti (id INT, amount DECIMAL(7,2), tr_date DATE) ENGINE=INNODB PARTITION BY HASH( MONTH(tr_date) ) PARTITIONS 6; • Partition type • Hash • Range • List • Key
  • 17. Range
  • 18. Hash
  • 19. Key
  • 20. List
  • 21. Partition ашиглах • CREATE TABLE ts1 ( • c1 INT, • c2 VARCHAR(20) • ) • PARTITION BY LIST(c1) ( • PARTITION p0 VALUES IN (0, 3, 6), • PARTITION p1 VALUES IN (1, 4, 7), • PARTITION p2 VALUES IN (2, 5, 8) • ); • INSERT INTO ts1 VALUES (8, 'mothra'); • c1 c2 8 mothra
  • 22. Анхаарал тавьсанд Баярлалаа