SlideShare uma empresa Scribd logo
1 de 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
Анхаарал тавьсанд
    Баярлалаа

Mais conteúdo relacionado

Mais procurados

Documentacion edderson callpa_ortiz
Documentacion edderson callpa_ortizDocumentacion edderson callpa_ortiz
Documentacion edderson callpa_ortiz
Edderson 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 rudimentaria
jbersosa
 
Feeds. использование и создание плагинов. Feeds API
Feeds. использование и создание плагинов. Feeds APIFeeds. использование и создание плагинов. Feeds API
Feeds. использование и создание плагинов. Feeds API
Alex S
 
Assalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuuAssalamualaykum warahmatullahi wabarakatuu
Assalamualaykum warahmatullahi wabarakatuu
iswan_di
 
Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0Юнит тестирование в Zend Framework 2.0
Юнит тестирование в Zend Framework 2.0
zfconfua
 
Php codigos interfaces fredy guzman cusihunca
Php codigos interfaces   fredy guzman cusihuncaPhp codigos interfaces   fredy guzman cusihunca
Php codigos interfaces fredy guzman cusihunca
Tigger_Fred
 
Drupal 8. Movement towards. Susikov Sergey
Drupal 8. Movement towards. Susikov SergeyDrupal 8. Movement towards. Susikov Sergey
Drupal 8. Movement towards. Susikov Sergey
ADCI Solutions
 

Mais procurados (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
 

Destaque

Day 1
Day 1Day 1
Day 1
ETC
 
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
ETC
 
My sql lec2
My sql lec2My sql lec2
My sql lec2
ETC
 
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
ETC
 
User account policy
User account policyUser account policy
User account policy
Muuluu
 
Лекц 5
Лекц 5Лекц 5
Лекц 5
Muuluu
 
Day 2 php
Day 2   phpDay 2   php
Day 2 php
ETC
 

Destaque (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. Анхаарал тавьсанд Баярлалаа