μ΅κ·Ό νλ‘μ νΈμμ λμ©λ νμΌμ μ½μ΄μ¬ μΌμ΄ λ§μ΄ μκ²Όλ€. νμΌμ μ½μ΄μμ `Json` ννλ‘ λ³νμ ν΄μ€μΌ νκΈ°μ νμ€μ μ½μ΄μμ νΈνκ² μ²λ¦¬ν μ μλλ‘ `readline()` μ μ¬μ©νμλ€.
Redisμ Event-Loop? > Redisλ μ±κΈ μ€λ λμΈλ°, μ΄λ»κ² μλ§μ μμ²μ λμμ μ²λ¦¬ν μ μλκ±ΈκΉ? λΌλ κΆκΈμ¦μμ ν΄λΉ ν¬μ€ν μ μμ±ν΄λ³΄μλ€. κ²°λ‘ λΆν° λ§νμλ©΄, Redisλ₯Ό μ μΈνκ³ λ Node.jsλ JavaScript λ μ±κΈ μ€λ λλ©΄μ μ΄λ²€
κ²°λ‘ λΆν° λ§νμλ©΄, `HashSet` μμ λ΄λΆμ μΌλ‘ `HashMap` μ μ¬μ©ν΄μ λμνλ€. κ·Έλ¦¬κ³ `HashMap` μ ν΄μ ν μ΄λΈ κΈ°λ°μΌλ‘ λμνλ€.
βοΈ Redisλ₯Ό μ¬μ©ν μ΄μ ? `Redis` λ `Memcached` λ₯Ό μ¬μ©νλ λ°©λ²μ κΈλ‘λ² μΊμ± μ λ΅μ΄λ€.
μ격 νλ‘μλ μ€μ κ°μ²΄μ²λΌ νλνμ§λ§, μ€μ λ‘λ λ€νΈμν¬λ‘ μ§μ§ κ°μ²΄μ λ°μ΄ν°λ₯Ό μ£Όκ³ λ°κ² λλ€. μ¦ μ격 νλ‘μλ κ° μ¬μ©μμ JVM λ΄λΆμ ν μμμ μ‘΄μ¬νλ λ‘컬 κ°μ²΄λΌκ³ λ ν μ μλ€.ν΄λΌμ΄μΈνΈκ° λ‘컬μμ μ격 νλ‘μλ₯Ό νΈμΆνλ€.(λλ³μ μν )νλ‘μκ° μ€μ μ
MySQL μλ²μ μ΅ν°λ§μ΄μ λ μ€ν κ³νμ μ립ν λ, ν΅κ³ μ 보μ μ΅ν°λ§μ΄μ μ΅μ μ κ²°ν©ν΄ μ΅μ μ μ€ν κ³νμ μ립νλ€. μ΅ν°λ§μ΄μ μ€μμΉ μ΅μ μ optimizer_switch μμ€ν λ³μλ₯Ό μ΄μ©ν΄μ μ μ΄νλ€.Multi Range Read λ, Nested Loop
GROUP BY μ²λ¦¬ GROUP BY μμ ORDER BYκ³Ό λ§μ°¬κ°μ§λ‘ μΈλ±μ€λ₯Ό μ¬μ©ν μ μμΌλ―λ‘, νν°λ§ μν μ νλ HAVINGμ μ νλν μ μλ€. μΈλ±μ€λ₯Ό μ¬μ©νλ κ²½μ° μΈλ±μ€ μ€μΊ μ΄μ© λ£¨μ€ μΈλ±μ€ μ€μΊ μ΄μ© μμ ν μ΄λΈμ μ¬μ©νλ κ²½μ° DISTI
60λ§κ±΄μ μ μ€λ¬Ό λ°μ΄ν°λ₯Ό λ΄μ©μΌλ‘ κ²μν λ, νλ‘ νΈμμ κ°λ μλ΅ μκ°μ΄ λ무 μ€λ κ±Έλ¦°λ€λ νΌλλ°±μ λ°κ³ μ±λ₯μ μ¬λ €λ³΄κΈ°λ‘ νλ€.
ν΄λ¬μ€ν°λ§ μΈλ±μ€λ? > 𫧠ν΄λ¬μ€ν°λ§μ΄λ? μλ‘ μ°κ΄μ΄ μλ λ°μ΄ν°λ€μ νλλ‘ λ¬Άλ κ²μ μλ―Ένλ€. λ°λΌμ ν΄λ¬μ€ν°λ§ μΈλ±μ€λ, ν μ΄λΈμ λ μ½λλ₯Ό νλΌμ΄λ¨Έλ¦¬ν€κ° λΉμ·ν κ² λΌλ¦¬ λ¬Άλ κ²μ μλ―Ένλ€. μ€μν κ²μ InnoDB μμλ νλΌμ΄λ¨Έλ¦¬ ν€μ μν΄, μ½μ
βοΈ λμ€ν¬ μ½κΈ° λ°©μ CPUμ λ©λͺ¨λ¦¬λ μ κΈ°μ νΉμ±μ λκ³ μλ μ₯μΉμ΄κΈ° λλ¬Έμ, μλκ° λΉ λ₯΄λ€. νμ§λ§ μ΄μ λ°ν΄ λμ€ν¬μ κ°μ κΈ°κ³μ μ₯μΉλ μ¬μ ν λ리λ―λ‘, λ°μ΄ν°λ² μ΄μ€ μ±λ₯ νλμ λμ€ν¬ I/Oλ₯Ό μΌλ§λ μ€μ΄λκ° κ΄κ±΄μ΄λΌ ν μ μλ€. HDD VS SSD
Q. static ν€μλκ° λΆμΌλ©΄ μ΄ν리μΌμ΄μ μ€ν μμ μ΄λ―Έ μ΄κΈ°νκ° λλλλ°, μ΄λ»κ² μ§μ° λ‘λ©μ΄ κ°λ₯νκ°? μ μ νλ μ΄κΈ°ν - μ§μ° μ΄κΈ°ν νλ ν΄λμ€ κ΄μ©κ΅¬ βοΈ Bill Pugh Solution (LazyHolder) κΆμ₯λλ λ°©λ² μ€ νλλ‘, λ©ν°μ€λ
νΈλμμ 격리 μμ€μ΄λ, μ¬λ¬ νΈλμμ μ΄ λμμ μ²λ¦¬λ λ νΉμ νΈλμμ μ΄ λ€λ₯Έ νΈλμμ μμ λ³κ²½νκ±°λ μ‘°ννλ λ°μ΄ν°λ₯Ό λ³Ό μ μλλ‘ νμ©ν μ§ λ§μ§ κ²°μ νλ κ²μ μλ―Ένλ€. μ΄ λ€ λ¨κ³λ‘ λλλ©°, λ€λ‘ κ°μλ‘ κ³ λ¦½ μ λ(격리)κ° λμμ Έ λμ μ²λ¦¬ μ±λ₯μ΄ λ¨μ΄μ Έμ μ
νΈλμμ : μμ μ μμ μ±(μΌλΆλ§ μ μ©λλ μΌμ΄ μλλ‘)μ 보μ₯νλ λ°μ΄ν°μ μ ν©μ±μ μν κΈ°λ₯μ΄λ€. μ κΈ(Lock): λ μ½λμ λν λμμ±μ μ μ΄νκΈ° μν κΈ°λ₯μ΄λ€. MyISAMμ΄λ MEMORY λ InnoDB μ λ¬λ¦¬ νΈλμμ μ μ§μνμ§ μλλ€. νΈλμμ κΈ°λ₯μ΄
μ΄λλμ²λΌ SSH μ μμ νλ €κ³ λͺ λ Ήμ΄λ₯Ό μ€νμμΌ°λλ, μ΄λ μλ¬ λ¬Έκ΅¬λ μμ΄ μ μμ΄ λμ§ μμλ€. ν¬λ‘ νμ ν΅ν΄ ν μ€νΈνλ €κ³ λ§€μ΄λ§λ€ ν¬λ‘€λ§μ ν΄μ€λλ‘ μ€μ ν΄λ¨μκΈ° λλ¬Έμ, μμ μ§κ°μΌλ‘ CPU μ¬μ©λ₯ μ λ¨Όμ νμΈν΄λ³΄μλ€.μ€μΌμ€λ§ μμ μ΄ μΌμ΄λ λ μλμ κ°μ΄ CPU
InnoDB λ²νΌ νμ΄λ, λμ€ν¬μ λ°μ΄ν° νμΌμ΄λ μΈλ±μ€ μ 보λ₯Ό λ©λͺ¨λ¦¬μ μΊμν΄λλ 곡κ°μ΄λ€. λν μΌκ΄ μ²λ¦¬λ₯Ό μν μ°κΈ° μμ λ μ½λ λ²νΌ μ©λλ‘λ μ¬μ©λλ€. 1. λ²νΌ ν ν¬κΈ° μ€μ μΌλ°μ μΌλ‘ μ΄μ체μ 곡κ°μ΄ 8GB λ―Έλ§μ΄λΌλ©΄, 50% μ λλ§ InnoDB λ²νΌ
μ±κΈν€κ³ κ°μ΄ λΆλ³μμ μ§ν€λ €κ³ νλ€λ©΄, μ΄κ±° νμ μ μ¬μ©νμ. readResolve λ₯Ό μ¬μ©νλ€λ©΄ λ°λμ λͺ¨λ μ°Έμ‘° νμ μΈμ€ν΄μ€ νλλ₯Ό transient λ‘ μ μΈν΄μΌ νλ€. μ±κΈν΄ ν΄λμ€ μ§λ ¬ν λ¬Έμ μ±κΈν΄ ν΄λμ€λ₯Ό μ§λ ¬ν νλ €κ³ Seriablizable λ₯Ό ꡬν
βοΈ νλΌμ΄λ¨Έλ¦¬ ν€μ μν ν΄λ¬μ€ν°λ§ λͺ¨λ ν μ΄λΈμ, κΈ°λ³Έμ μΌλ‘ νλΌμ΄λ¨Έλ¦¬ ν€λ₯Ό κΈ°μ€μΌλ‘ ν΄λ¬μ€ν λμ΄ μ μ₯λλ€. ν΄λ¬μ€ν°λ§ μΈλ±μ€λ? https://www.geeksforgeeks.org/difference-between-clustered-and-non-clus
μ 체μ μΈ μν€ν μ² MYSQL μμ§ ν΄λΌμ΄μΈνΈλ‘λΆν°μ μ μ λ° μΏΌλ¦¬ μμ²μ μ²λ¦¬νλ 컀λ₯μ νΈλ€λ¬, SQL νμ, μ΅ν°λ§μ΄μ λ± μμ²λ SQL λ¬Έμ₯μ λΆμνκ±°λ μ΅μ ννλ μμ§μ΄λ€. GROUP BY, ORDER BY λ± λ³΅μ‘ν μ²λ¦¬λ ν΄λΉ μμ§μ μ²λ¦¬ μμμΈ μΏΌλ¦¬ μ€ν
μ€μΌμ€λ§ μ μ± μ μ΄μ체μ λ§λ€ λ€λ₯Ό μ μμΌλ―λ‘, νλ‘κ·Έλ¨μ μ±λ₯μ΄ μ€μΌμ€λ¬μ λ°λΌ λ¬λΌμ§μ§ μλλ‘ ν΄μΌ νλ€. μλ μΈ κ°μ§ λ°©μμ μ§ν¨λ€λ©΄, μ€μΌμ€λ¬μ λ 립μ μΈ μ΄μμ±μ΄ λμ νλ‘κ·Έλ¨μ λ§λ€ μ μλ€. βοΈ μ€ν κ°λ₯ν μ€λ λ μκ² μ μ§νκΈ° μ€ν κ°λ₯ν μ€λ λ
κ³Όλν λκΈ°νλ μ€νλ € μ±λ₯μ λ¨μ΄νΈλ¦¬κ³ , κ΅μ°©μνμ λΉ λ¨λ¦°λ€. λκΈ°νλ μμ μμμ μ¬μ μν μ μλ λ©μλ νΈμΆνλ κ²½μ° μ¬μ μ κ°λ₯ν λ©μλλ, μμμμ μ΄λ€ μ§μ νλμ§ ν΅μ ν μ μκΈ° λλ¬Έμ(ex) λΆλͺ¨ λ©μλλ₯Ό λ€μ νΈμΆ) μμΈλ₯Ό μΌμΌν€κ±°λ κ΅μ°©μνμ λΉ