Don't wanna be here? Send us removal request.
Text
μΉ μλ²λ ν΄λΌμ΄μΈνΈ-λΈλΌμ°μ μ¬μ΄
λΈλΌμ°μ λ μνλ€!
"HTMLμ!" κ·Έλ¬λ μ§μ μ½μ΄μ¬ μ μλ€.
κ·Έλμ μμ²νλ€
URLμ ννλ‘! HTMLμ
μΉ μλ²λ μ€λ€!
"HTMLμ" HTTP μ½μ (νλ‘ν μ½, ν΅μ κ·μ½)μ ν΅ν΄μ
μΈμ λ, μμ νκ², λΉ λ₯΄κ². HTMLμ
0 notes
Text
Nginx ν¬νΈ μ¬λ¬ κ° μ¬μ©νκΈ° (2κ°!)
Nginxλ κΈ°λ³Έμ μΌλ‘ ν¬νΈ 3000μ μ°λλ° (μμ νμ΅ μ κΉμ§ μλ§ 8080)
λλ 9223μ μ¨λ³΄κ³ μΆμλ€.
νμ§λ§ μλ²½νκ² μ€ν¨νμλ€. (μ)
μ΄μ λ κΈ°λ³Έ μ€μ μ΄ 3000λ§ listen νλλ‘ λμ΄μκΈ° λλ¬Έ.
(μ°Έκ³ λ§ν¬: https://velog.io/@dong3789/nginx-%ED%8F%AC%ED%8A%B8%EB%B3%84-%EB%8F%84%EB%A9%94%EC%9D%B8%EC%9D%84-%EB%8B%AC%EC%95%84%EB%B3%B4%EC%9E%90)
sudo nano /opt/homebrew/etc/nginx/nginx.conf
ν΄μ (κΆν μμΌλ©΄ κ± κ³ μΉκ±°λ)
μλμ²λΌ νλ©΄ λλ€ ( ν¬νΈ μΆκ° )
μ°Έκ³ λ‘ M2 Mac κΈ°μ€.
μ§μ μ°λ€κ° μ£½λμ€ μμλ€. 3μλΌλ νν.
κ·Έλλ λΏλ―νλ€.
μΉ νμ΄μ§λ§λ€ μ΄λ€ 건 3000λ§ μ°κ³ , μ΄λ€ 건 9223λ§ μ°λλ‘λ ν΄λ³΄κ³ μΆμλ° κ·Έκ±΄ λ€μμ νκ³ .
보기μ μ μ’μλ μ½λ κ·Έλλ‘ λΆμ΄λ©΄ μλλ κ°λ€.
server { listen 9223; server_name sena.com; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; } #error_page 404 /404.html; #redirect server error pages to the static page /50x.html # error_page 500 502 503 504 /50x.html; location = /50x.html { root html; } # proxy the PHP scripts to Apache listening on 127.0.0.1:9223 # #location ~ \.php$ { # proxy_pass http://127.0.0.1; #} # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # #location ~ \.php$ { # root html; # fastcgi_pass 127.0.0.1:9000; # fastcgi_index index.php; # fastcgi_param SCRIPT_FILENAME /scripts$fastcgi_script_name; # include fastcgi_params; #} # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # #location ~ /\.ht { # deny all; #} }
μ΄κ² λμΌ
0 notes
Text
Nginx
μ°Έκ³ : https://smali-kazmi.medium.com/setup-nginx-node-js-on-mac-os-x-b31eda9f7d5d
how to read (pronounce): μμ§ μμ€
Nginx currently supportsΒ 7 scripting languages: Go, Node.js, Perl, PHP, Python, Ruby, and Java Servlet Containers
(the last is an experimental module)
It enables you to run applications written in different languages on the same server.
how to install: https://dev.to/logrocket/how-to-run-a-node-js-server-with-nginx-588
how to install by M2: 1. homebrew install with terminal commands
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
2. PATH for homebrew: (2-lines)
(echo; echo 'eval "$(/opt/homebrew/bin/brew shellenv)"') >> /Users/nika/.zprofile
eval "$(/opt/homebrew/bin/brew shellenv)"
3. run:
To start nginx now and restart at login:
Β brew services start nginx
Or, if you don't want/need a background service you can just run:
Β /opt/homebrew/opt/nginx/bin/nginx -g daemon\ off\;
[like this] nginx, "http://localhost:8080/"
4. stop
nginx -s stop
5. μλ¬ νμΈ:
Β nginx -t
nginx: the configuration file /opt/homebrew/etc/nginx/nginx.conf syntax is ok
nginx: configuration file /opt/homebrew/etc/nginx/nginx.conf test is successful
6. 리λ‘λ:
nginx -s reload
sudo nano /opt/homebrew/etc/nginx/nginx.conf (after password)
λν΄νΈ κ΅¬μ± λ°κΎΈκΈ°, (nano: vim, emacs κ°μ μλν°λ‘ μμ νκ²λ μνΌμ μ μ€μ κΆνμ μ€λ€)
λλ
Έ λͺ
λ Ήμ΄:
^G : λμλ§ λ³΄κΈ°
^X : λλ΄κΈ°
^O : νμΌ μ μ₯(μ μ₯ν νμΌλͺ
μ
λ ₯, λν΄νΈλ μ΅μ΄ νμΌλͺ
)
^R : νμΌ μ½κΈ°(νμ¬ νμΌμ μλ‘μ΄ νμΌ μΆκ°)
^W : ν
μ€νΈ κ²μ
^\ : κ²μ ν λ°κΎΈκΈ°
^K : μ νν λ¬Έμμ΄ μλΌλ΄κΈ°
^U : μλΌλΈ λ¬Έμμ΄ λΆμ΄κΈ°
^J : μμͺ½ μ λ ¬(νμ€λ‘ νμ)
^T : λ§μΆ€λ² 체ν¬
^C : νμ¬ μ»€μ μμΉ
^- : μ
λ ₯ν νλ²νΈ, μ΄λ²νΈλ‘ μ΄λ
^A : νμ¬ νμ μ²μμΌλ‘ μ΄λ
^E : νμ¬ νμ λ§μ§λ§μΌλ‘ μ΄λ
Mac ν΄λ μμ± λͺ
λ Ήμ΄: mkdir servers
mkdir -p /var/www/sena.com
Mac νμΌ μμ± λͺ
λ Ήμ΄: touch ~/servers/examplePage/example.com (~ kiteκΉμ§ ν¬ν¨)
touch ~/servers/examplePage/app.js
nano μ μ°κ³ μλ¬ ν΄κ²°λ²:
sudo vi λ§λλ €λ νμΌλͺ
or μ μ₯Β ν λΒ
:w !sudo teeΒ % > /dev/null
the page eXample:
make folder and "example.com" file
make app.js (javaScript file)
edit /etc/hosts (add 127.0.0.1 example.com)
μ ν¬νΈ μΆκ°νλ λ²:
μ΄κ±Έ νκ³ μΆμΌλ©΄ μ΄λ¬λ©΄ λλ€: sudo nano /opt/homebrew/etc/nginx/nginx.conf
λ§ν¬
0 notes
Text
MacOS zsh commands
echo $SHELL
/bin/zsh
λμλ¬Έμ ꡬλΆμ μ€μνλ€*
0 notes
Text
nodeJS
Node.js v20.10.0 to /usr/local/bin/node
npm v10.2.3 to /usr/local/bin/npm
/usr/local/bin is in your $PATH.
0 notes
Text
μλ¨μ΄ μ 리
deploy λ°°ν¬
versatile λ€μ¬λ€λ₯ν, λ€μ©λμ
0 notes
Text
ν
λΈλ¬ κΈ°λ₯ μ 리
μ±ν
κΈ°λ₯ - 'λꡬλꡬ:'μ κ°μ΄ μ°λ©° μ²μ λ μ€λ§ μΈμλλ€.
λ보기 λ§ν¬ κΈ°λ₯ - 'μμΈ κΈ°λ₯'μ ν΄λΉνλλ°, κΈμ°κΈ° μ€ μ΄ κΈ°λ₯μ ν λ² μΈ μ μλ€. μ΄ κΈ°λ₯μ 'λ보기 λ§ν¬' μ΄νμ λ΄μ©μ 'κ³μ 보기'λ‘ κ°λ €μ€λ€.
0 notes
Text
λ°μ΄ν°λ² μ΄μ€λ (mysql) (λͺ©μ°¨)
λ°μ΄ν°λ² μ΄μ€λ λ°μ΄ν°μ μ§ν©μ΄λ€.
.
λ°μ΄ν°λ² μ΄μ€ νΈλμμ
.
0 notes
Text
λ°μ΄ν°λ² μ΄μ€ (mysql) νΈλμμ
ACIDλ?
β³ μ μ, (λΆκ°μ μ,) νλμ¨μ΄μ μ리, ꡬμ±λ², νΈλμμ
vs νμΌ μμ€ν
μμ
ν λ°μ΄ν°λ² μ΄μ€μ νΈνλλ κΈ°λ₯μΈκ°?
λμ²λ²
ACIDκ° λμ§ μμ보기 μ μ γνΈλμμ
γ μ΄ λμ§ μμλ΄μ.
TRANSACTION
λ°μ΄ν°λ₯Ό λ€λ£¨λ λ
Όλ¦¬μ μΈ μμ
μ λ¨μ μ΄λ€.
DBMSκ° λ°μ΄ν°λ² μ΄μ€λ₯Ό λ€λ£° λ μ¬μ©νλ μμ
(νλ‘κ·Έλ¨) λ¨μ μ΄κΈ°λ
νΈλμμ
μ λ°μ΄ν°λ² μ΄μ€μ 무결μ±μ (μΌκ΄μ±)μ μ μ§νκΈ° μν΄μ μ΄λ€.
+ μ₯μ κ° μΌμ΄λ¬μ λ λ°μ΄ν°λ₯Ό 볡ꡬνλ μμ
μ λ¨μ (λ‘€λ°± λ¨μ)
+ λμμ± μ μ΄ λΈλ‘ λ¨μ (κ°μ λ°μ΄ν°λ₯Ό κ°μ νμ΄λ°μ νμ©ν λ, μλ‘ λΆλ¦¬νλ λ¨μ)
γνλμ¨μ΄μ μ리γ
START TRANSACTION;
νλ©΄ νΈλμμ
μ€μλ λ°μ΄ν°λ₯Ό 'μ£ΌκΈ°μ΅μ₯μΉ λ²νΌ' μ¦ 'λ©λͺ¨λ¦¬ λ²νΌ'μ μ μ₯νλ€
(λ©λͺ¨λ¦¬λ νλ°μ±μ΄λ€) μ½μ΄μ¬ λλ λ²νΌμμ μ½μ΄μ¨λ€.
λμ€μ COMMIT;μ λ§λλ©΄
νλλμ€ν¬, SSD μ κ°μ μ€μ§μ 물리μ μ μ₯μ₯μΉμ μ΅μ’
μ μ₯λλ€.
γμ’
λ£ μλ¦Ό ꡬμ±λ² iγ
β β‘ β’ β£ COMMIT β€ β₯
γμ’
λ£ μλ¦Ό ꡬμ±λ² iiγ
β β‘ β’ β£ β€ β₯ COMMIT
*COMMITμ νΈλμμ
μ μ’
λ£λ₯Ό μ리λ SQL λ¬Έμ΄λ€.
(μ°λ¦¬κ° 쿼리λ₯Ό μν ν CLI λ±μμ 'QUERY OK!'λ₯Ό λ°λ κ²μ μ λλΆ)
[보ν΅]
μ¬μ©μλ₯Ό κ³ λ €νμ¬, λΉ λ₯Έ λ°μμ± μ¦ 'μλ΅μ±'μ 보μ₯νκΈ° μν΄
λ³Έ μ μ₯μ₯μΉ μ μ₯ μ μ, μ¦ 'λ©λͺ¨λ¦¬ λ²νΌ' 'μ£ΌκΈ°μ΅μ₯μΉ λ²νΌ' μμμ μμ
μ΄
λλλ©΄ COMMITμ νμ¬ νΈλμμ
μ μμ μ’
λ£ μ μΈ νκ³
μ€μ λ°μ΄ν°λ² μ΄μ€μ κΈ°λ‘νλ κ²μ DBMSλ‘ νμ¬κΈ μννκ² νλ€.
κ·Έλμ μ€μ λ‘ μλ κ²
β β‘ β’ β£ COMMIT(λΆλΆ μλ£) β€ β₯ μλ£-
BEGIN(μμ) $
μν(β β‘ β’ β£) $ λΆλΆμλ£ $ λ²νΌλ΄μ© κΈ°λ‘(β€ β₯) $ μλ£(COMMIT)
γCOMMIT & ROLLBACKγ
TCL
νΈλμμ
컨νΈλ‘€ λκ·μ§
νΈλμμ
μ μ΄ λͺ
λ Ήμ΄λ‘μ, 컀λ°κ³Ό λ‘€λ°±μ΄ μλ€.
κΈ°λ³Έμ μΌλ‘ νΈλμμ
μ€κ°μ μμ
μ΄ μλͺ»λλ©΄ 'ν볡 μκ³ λ¦¬μ¦'μ μ°λλ°
μμμ μΌλ‘ νΈλμμ
μ μ·¨μνλ λͺ
λ Ήμ΄ ROLLBACKμ΄ μ΄λ μ¬μ©λκΈ°λ
λ³κ²½λ λ΄μ©μ μ λΆ μ·¨μνλ€.
+ SAVE (μΈμ΄νν¬μΈνΈ μμ±) (μ¬λ¬ κ° κ°λ₯)
++ AUTO TRANSACTION START
SET TRANSACTION NAME <μ΄λ¦>
OR 'UPDATE'μ κ°μ λ°μ΄ν° λ³κ²½ SQL λ¬Έμ΄ λμ€λ©΄ μλμΌλ‘ μμνλ€
AND ++
COMMIT λλ ROLLBACK λλ DDL λ¬Έμ λ§λλ©΄ μ’
λ£λλ€. (ν
μ΄λΈ μμ± λ±)
γνΈλμμ
vs νμΌ μμ€ν
μμ
γ
νΈλμμ
: λ²μκΈ°:: DBMS $ μ±μ§:: ACID
νμΌ μμ€ν
μμ
: λ²μκΈ°:: μ»΄νμΌλ¬ $ μ±μ§:: NONE $ μμ
(νλ‘κ·Έλ¨) ꡬ쑰:: main(){ ... } $ νμ©λλ λ°μ΄ν°: νμΌμ μ μ₯λ λ°μ΄ν°
*νμΌ μμ€ν
μ DBMS μμ΄ νμΌ, μ¦ λ°μ΄ν°λ₯Ό μ§μ μ²λ¦¬νλ€.
γACIDγ
μμμ±, μΌκ΄μ±, κ³ λ¦½μ±, μ§μμ±
νΈλμμ
μ μ±μ§ 4
I. Atomicity μμμ±
all or nothing
νΈλμμ
μ ν¬ν¨λ μμ
μ μ λΆ μνλκ±°λ μλλ©΄ μ λΆ μνλμ§ μμμΌ νλ€.
μμμ²λΌ λ μ΄μ μͺΌκ°μ§μ§ μλ νλμ νλ‘κ·Έλ¨ λ¨μλ‘ λμν΄μΌ νλ€λ κ².
II. Consistency μΌκ΄μ± (무결μ±)
'λ¬΄κ²°μ± μ μ½μ‘°κ±΄'μ νμ©νμ¬
νΈλμμ
μν μ λ°μ΄ν°μ λ³κ²½μ΄ κ°ν΄μ§ λ
미리 μ μν΄ λ 'λ¬΄κ²°μ± μ μ½μ‘°κ±΄'μ κ²μ¬νμ¬ μΌκ΄μ±μ΄ κΉ¨μ§λ κ±Έ λ§λλ€.
κ·Έλ°λ° λ κ°μ νΈλμμ
μ΄ λμμ μνλ λ νΈλμμ
κ°μ κ°μμΌλ‘
μΌκ΄μ±μ΄ κΉ¨μ§λ νμμ λ¬΄κ²°μ± μ μ½μ‘°κ±΄μ κ²μ¬νλ κ²μΌλ‘ ν΄κ²°ν μ μλ€!
κ·Έλ¬λ―λ‘ λμμ κ°μ λ°μ΄ν°λ₯Ό μ κ·Όνλ νΈλμμ
λ€μ΄ μ§μ μκ² μ κ·Όνμ¬
λ°μ΄ν°λ² μ΄μ€μ μΌκ΄μ±μ μ μ§νλλ‘ νκΈ° μν΄μλ
'λμμ± μ μ΄ μκ³ λ¦¬μ¦'μ μλμμΌμΌ νλ€.
νΈλμμ
μ μννκΈ° μ μ΄λ μνν νλ λ°μ΄ν°λ² μ΄μ€λ νμ μΌκ΄λ μνλ₯Ό μ μ§ν΄μΌ νλ€λ κ². (μ§λ 보쑴μ λ²μΉ)
ν
μ΄λΈμ΄ μμ±λ λ CREATE λ¬Έκ³Ό ALTER λ¬Έμ 'λ¬΄κ²°μ± μ μ½μ‘°κ±΄'μ ν΅ν΄ λͺ
μλλ€. νΈλμμ
μ μ΄ λ¬΄κ²°μ± μ μ½μ‘°κ±΄μ λ°λΌ μΌκ΄μ±μ μ μ§νλ€.
λ€λ§ μν μ€μλ μΌμμ μΌλ‘ μΌκ΄μ±μ μ μ§νμ§ λͺ»νλ μνκ° μμ μ μλ€.
μΌκ΄μ± μλ μν: INCONSISTENT
III. Isolation κ³ λ¦½μ±
μν μ€μΈ νΈλμμ
μ λ€λ₯Έ νΈλμμ
μ΄ λΌμ΄λ€μ΄ λ³κ²½ μ€μΈ λ°μ΄ν° κ°μ νΌμνλ μΌμ΄ μμ΄μΌ νλ€. (λ³λ ¬ μΉ¨λ²)
λ°μ΄ν°λ² μ΄μ€λ κΈ°λ³Έμ μΌλ‘ '곡μ 'κ° λͺ©μ μ΄κΈ°μ
μ¬λ¬ νΈλμμ
λ€μ΄ λμμ μνλλ€
μ΄λ κ° νΈλμμ
μ λ³λ ¬μ μΌλ‘ μνλλ λ€λ₯Έ νΈλμμ
μ λ°©ν΄λ₯Ό λ°μ§ μκ³
λ
립μ μΌλ‘ μμ
μ μννλ€.
(μνΈ κ°μ μ΄λ λ°μ΄ν° μΆ©λμ΄ μΌμ΄λμ§ μλ νμ => κ³ λ¦½μ±)
κ³ λ¦½μ±μ μ μ§νκΈ° μν΄μλ λ³κ²½ μ€μΈ μμ λ°μ΄ν°λ₯Ό (in λ©λͺ¨λ¦¬ $ μ£ΌκΈ°μ΅μ₯μΉ)
λ€λ₯Έ νΈλμμ
μμ μ½κ±°λ μ°λ €κ³ ν λ μ μ΄νλ μμ
μ΄ νμνλ€,
=> μ΄κ²λ 'λμμ± μ μ΄ μκ³ λ¦¬μ¦'
concurrency control
κ°μ λ°μ΄ν°λ₯Ό κ°μ§κ³ μΆ©λνμ§ μλλ‘ μ μ΄νλ μμ
!
IV. Durability μ§μμ±
μνμ μ±κ³΅μ μΌλ‘ μλ£ν νΈλμμ
μ λ³κ²½ν λ°μ΄ν°λ₯Ό μꡬν μ μ₯ν΄μΌ νλ€.
μ μ₯λ λ°μ΄ν°λ² μ΄μ€λ μ μ₯ μ§ν νΉμ μ΄λ λλ λ°μν μ μλ
μ μ , μ₯μ , μ€λ₯ μ μν₯μ λ°μ§ μμμΌ νλ€.
DBMS 볡ꡬ μμ€ν
μ νΈλμμ
μ΄ μμ
ν λ΄μ©μ μμλ‘ log λ‘κ·Έ λ°μ΄ν°λ² μ΄μ€
μ κΈ°λ‘νμλ€κ° λ¬Έμ κ° λ°μνλ©΄, λ‘κ·Έ νμΌμ μ΄μ©νμ¬ λ³΅κ΅¬ μμ
μ μννλ€
μ¦ μμ€ν
μ΄ λ©μΆμ΄λ νΈλμμ
μνμΌλ‘ λ³κ²½λ λ΄μ©μ λμ€ν¬μ κΈ°λ‘λλ€.
μμ -> μν μ€ (active) -> λΆλΆ μλ£ -> λ²νΌ λ΄μ© κΈ°λ‘ -> μλ£
β³ μ€ν¨ -> μμ
μ·¨μ -> μ·¨μ
μμ: BEGIN, λΆλΆ μλ£: PARTIALLY COMMITTED, μ€ν¨: FAILED,
μλ£: COMMITTED, μ·¨μ: ABORTED
μ€ν¨: νΈλμμ
μ μ€κ°μ μ€λ¨νμκ±°λ λΆλΆ μλ£ μνμμ λ³κ²½ λ΄μ©μ
λ°μ΄ν°λ² μ΄μ€μ μ μ₯νμ§ λͺ»ν μνλ₯Ό λ§νλ€.
μ€ν¨ μνμμ DBMSλ νΈλμμ
μ΄ μνν μμ
μ λͺ¨λ μμ볡ꡬμν¨λ€.
γλμμ± μ μ΄ μκ³ λ¦¬μ¦γ
concurrency control
κ°μ λ°μ΄ν°λ₯Ό κ°μ§κ³ μΆ©λνμ§ μλλ‘ μ μ΄νλ μμ
!
λ½νΉ
λ§μΉ ν νΈλμμ
μ© μμ°¨μ μΌλ‘ μμλλ‘ μ κ·Όνλ κ²μ²λΌ μ μ΄
λ³λ ¬μ±μ κΉ¨λ¨λ¦°λ€.
-> λ³΄λ€ μνλ λ°©λ² γνΈλμμ
κ³ λ¦½ μμ€γ
isiolation level
γν볡 κ΄λ¦¬μ μκ³ λ¦¬μ¦γ
γνΈλμμ
μ μ±μ§κ³Ό κ΄κ³λ DBMSμ κΈ°λ₯γ
A: ν볡 (LOG DB)
C: λ¬΄κ²°μ± μ μ½μ‘°κ±΄(SQL λ¬Έ), λμμ± μ μ΄(LOCKING)
I: λμμ± μ μ΄(λ½νΉ)
D: ν볡 (λ‘κ·Έ λ°λ² )
[λμ²λ²]
νΈλμμ
μ΄ λ κ°λΌκ³ νμ. T1 T2
μ½κ³ μ½μ λλ λ¬Έμ μλ€. (λμ μ κ·Όμ νμ©νλ€)
μ½κ³ μΈ λμλ λ¬Έμ κ° λ°μνλ€. 3κ°μ§. (λμ μ κ·Όμ νμ©νκ±°λ κ±°λΆνκ±°λ)
μ€μ μ½κΈ° dirty-read, uncommitted-dependency
λ°λ³΅λΆκ°λ₯ μ½κΈ° non-repeatable-read, inconsistent-analysis
μ λ Ή λ°μ΄ν° μ½κΈ° phantom-read
μ°κ³ μΈ λμλ? μΉλͺ
μ μΈ λ¬Έμ κ° λ°μν μ μμΌλ. (κ±°λΆ. LOCKμ μ΄μ©)
κ°±μ μμ€ lost-update
γλ½νΉγ
λμμ± μ μ΄λ₯Ό μν κΈ°λ²
κ°±μ μμ€ λ°©μ§.
λ½μ νΈλμμ
μ΄ λ°μ΄ν°λ₯Ό μ½κ±°λ μμ ν λ λ°μ΄ν°μ νμνλ μ κΈ μ₯μΉλ€
== μμ μ΄ λ°μ΄ν°λ₯Ό μ½λ μ€ λλ μμ μ€ λλ μΆκ° μ€μ΄λΌλ κ±Έ μ리λ μ₯μΉ
LS, LXλ‘ wait λκΈ° μν€κ±°λ UN ν΄μ§νλ€.
shared lock, eXclusive lock, unlock
곡μ λ½ (LS)λ 곡μ λ½μ νμ©νκ³ , λ°°νλ½μ κ±°λΆνλ€.
λ² νλ½ (LX)λ 곡μ λ½μ κ±°λΆνκ³ , λ°°νλ½λ κ±°λΆνλ€.
COMMIT μ νλ©΄ μꡬ μ μ₯λ κ² μλλ€.
[κ·Έλ₯ λ½νΉκ³Ό '2λ¨κ³ λ½νΉ'μ μ°¨μ΄]
νΈλμμ
μ΄ λλ λκΉμ§ λ½μ λμμ£Όμ§ μλλ€. (μΌκ΄μ± 보νΈ)
λ°λλ½ μ¦ κ΅μ°© μνκ° λ°μν μ μλ€.
νμ₯ λ¨κ³ & μμΆ λ¨κ³λ‘ λλλ€.
νμ₯ λ¨κ³: Growing phase, Expanding phase
νΈλμμ
μ΄ νμν λ½μ νλνλ λ¨κ³λ‘,
μ΄ λ¨κ³μμλ νΈλμμ
μ΄ λλκΈ° μ κΉμ§ μ΄λ―Έ νλν λ½μ ν΄μ νμ§ μλλ€.
μμΆ λ¨κ³: Shrinking phase
νΈλμμ
μ΄ λ½μ ν΄μ νλ λ¨κ³λ‘,
μ΄ λ¨κ³μμλ μλ‘μ΄ λ½μ νλνμ§ μλλ€. (λͺ½λ
ν΄μ§, μΈλ½)
[κ΅μ°© μν == λ°λλ½]
deadrock
μμμ T1μ΄ LX(A), T2κ° LX(B)μ κ°μ Έλ²λ¦¬λ©΄ λ§νλ€.
μ μ μ λκΈ°, HOLD AND WAIT
무ν λκΈ° μνμ λΉ μ§ μ μλ€.
μκ°νλ μ² νμλ€μ μμ¬ μκ°
[λ°λλ½μ ν΄κ²°νλ €λ©΄]
λκΈ° κ·Έλνλ₯Ό κ·Έλ €μ μ¬μ΄ν΄μ΄ μλμ§ νμΈν νμκ° μλ€.
wait-for graph
λ½νΉ λ¨μλ,
λ½μ΄ 걸리λ λ°μ΄ν° λ²μλ‘
λ½νΉ λ¨μκ° μμμ§λ©΄ λ³νμ± μμ€μ΄ λμμ§λ€.
...λ½νΉ μ€λ²ν€λλ λ½ κ±Έμλ€κ° νμλ€κ°κ° μ€μ΄λλκΉ μ€μ΄λ€κ³
γκ³ λ¦½ μμ€γ
μ½κ³ μ°κΈ° μν©μ κ³ λ €ν μ μλ λ°©λ²μ΄λ€.
μ€μ μ½κΈ° -> λ°°νλ½μ κ±Έμ΄λ 곡μ λ½μ κ±Έμ§ μμ.
(λ€λ₯Έ νΈλμμ
μ 곡μ λ½κ³Ό λ°°νλ½μ΄ κ±Έλ¦° λ°μ΄ν°λ₯Ό μ½μ μ μλ€)
λ‘€λ°±μ κ±Έμ΄λ²λ¦¬λ©΄, λ‘€λ°± κ±ΈκΈ° μ μν μ€μ΄λ λ°μ΄ν°λ§μ μ½μ΄λ²λ¦¬κΈ°μ (λ²νΌ)
μλͺ»λ λ°μ΄ν°λ₯Ό μ½μ΄λ²λ¦¬λ μ
μ΄ λλ€.
SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
(λ 벨 0)
=> 곡μ λ½μ κ±Έμ΄λ²λ¦°λ€. (곡μ λ½ κ±Έλ € μμΌλ©΄ λͺ» λ°κΎΈκ²)
λ°λ³΅λΆκ°λ₯ μ½κΈ° -> 곡μ λ½μ κ±Έμ§λ§ λλλ©΄ νΈλμμ
μ μ λ°λ‘ ν΄μ§νλ€
(λ€λ₯Έ νΈλμμ
μ΄ μ€μ ν 곡μ λ½μ μ½μ§λ§ λ°°νλ½μ μ½μ§ λͺ»νλ€)
νΈλ μ€ μ μ μΆλ ₯ν κ±°λ νμ μΆλ ₯λλ κ² λ¬λΌλ, μ¬μ©μλ λͺ¨λ₯Έλ€ (λμ§)
SET TRANSACTION ISOLATION LEVEL READ COMMITTED;
(λ 벨 1) (=κΈ°λ³Έ λ½)
=> νΈλμμ
λλ λκΉμ§ λ½ κ±Έμ.
μ λ Ή λ°μ΄ν° μ½κΈ° -> 곡μ λ½μ κ±Έκ³ νΈλμμ
λκΉμ§ μ μ§νλ€
(λ€λ₯Έ νΈλμμ
μ΄ μ€μ ν 곡μ λ½μ μ½μ§λ§ λ°°νλ½μ μ½μ§ λͺ»νλ€)
μμ μ λ°©μ§νλλ°, μΆκ°λ λ°©μ§ λͺ» νλ€.
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
(λ 벨 2) (=2λ¨κ³ λ½νΉ)
=> μΈλ±μ€λ³λ‘ λ½ κ±Έμ. (INSERT κ±°λΆ)
*κ·ΈλΌ κ²°κ΅ μμ°¨μ μΌλ‘, μ§λ ¬νλ κ²κ³Ό κ°μμ§λ€
λ§μ§λ§ λ 벨 -> μΈλ±μ€μ 곡μ λ½μ μ€μ νμ¬
λ€λ₯Έ νΈλμμ
μ INSERT λ¬Έμ΄ κΈμ§λλ€
(SELECT μ§μμ λμμ΄ λλ ν
μ΄λΈμ 미리 λ°°νλ½μ μ€μ ν κ²κ³Ό κ°μ ν¨κ³Ό)
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
(λ 벨 3)
MYSQLμ 곡μ λ½μ κ±Έμ§ μκ³ μ΅μ΄ νΈλμμ
SELECT μν μ
SNAPSHOTμ λ§λ ν κ·Έ μ€λ
μ·μΌλ‘ μνν΄ νΈλμμ
μ λ³κ²½ μμλ
λμΌν κ²°κ³Όλ₯Ό μ μ§νλ€ (INSERT λ³ν μμ)
0 notes
Text
μ΄μ₯ - AppCoding for looks
μ ν리μΌμ΄μ
κ°λ°μ λΆμΌλ₯Ό 곡λΆνμ§ 2λ¬μ―€ λ μκ°μ 'ν΄λΌμ΄μΈνΈλ λ΄ κΈΈμ΄ μλ'μλ€. β¦β¦μ¦κ²κΈ΄ νμ§λ§, μ¬ν λ
Έκ°λ€λΌλ μΈμμ λ°μλ€. (μΉμ μΌλΆλΌλ λλλ λ€μκ³ ) ν΄μ ν νκΈ° λμ λ°°μ΄ κ²μ μ 리νλ©΄μ λμμ μμ΅νκ³ μλ μλ² λΆλΆμ λ
Ήμ¬λ΄λ €κ³ νλ€.
γν΄λΌμ΄μΈνΈγ
Β· basic
Β· lifecycle μλͺ
μ£ΌκΈ°
Β· inflate (menu and intent) & adapter (entries) & ...
γμλ²γ
Β· spring-boot-3
0 notes