묻고 답해요
167만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
메모리와 커버드 인덱스 사용 질문입니다.
1. 메모리 찾으려는 데이터가 메모리에 올라와 있다는 보장이 없다고 하셨는데 그렇다면 반대로 Clustered Index 는 항상 올라와 있는건가요?아니면 불러와야 하지만 불러올 부분을 정확히 알기 때문에 비효율적인 부분없이 처리한다는 의미인가요? 2. 설명을 들어보면 INDEX 설정할 때 WITH 를 거는게 DML 작업에 부하가 적다고 하셨는데 주로 커버드 인덱스를 활용하시는 이유를 알 수 있을까요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL 문제풀이
2번문제 질문합니다
SELECT DISTINCT CITY FROM STATION WHERE (CITY NOT LIKE 'A%' OR CITY NOT LIKE 'E%' OR CITY NOT LIKE 'I%' OR CITY NOT LIKE 'O%' OR CITY NOT LIKE 'U%') OR (CITY NOT LIKE '%a' OR CITY NOT LIKE '%e' OR CITY NOT LIKE '%i' OR CITY NOT LIKE '%o' OR CITY NOT LIKE '%u') 은 왜 안되나요? 구글링했는데 SELECT DISTINCT CITY FROM STATION WHERE (NOT(CITY Like 'A%' OR CITY LIKE 'E%' OR CITY LIKE 'O%' OR CITY LIKE 'I%' OR CITY LIKE 'U%')) OR (NOT (CITY LIKE '%a' OR CITY LIKE '%e' OR CITY LIKE '%i' OR CITY LIKE '%o' OR CITY LIKE '%u')) 랑 조금 다른데 왜 답도 다르게 나오는지 모르겠습니다 .ㅠㅠㅠㅠ
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
유니티의 Scriptable Object를 DB로 사용해도 될까요?
https://github.com/Heretic-byte/Strategy2/blob/master/Assets/Scripts/SO/UnitTable.cs 이런식으로 유니티가 제공하는 Scriptable Object를 db처럼 사용하는 코드들을 봤는데요 현업분들중에 db를 이런것으로 사용하는 분은 들어보지 못했습니다. 혹시 이런 방법을 사용하지 않는 치명적인 이유가 있을까요? 또 언리얼에서도 FDataTableRow 라는 데이터테이블의 역할을 해주는 기능이 있던데 기업에서도 이런 기능을 사용하나요? 아니면 전부 sql로 처리하게 되나요?
-
미해결[백문이불여일타] 데이터 분석을 위한 고급 SQL 문제풀이
제가 풀어본 Ollivander's Inventory 문제 틀린 이유 알고 싶습니다.
SELECT w.id, wp.age, w.coins_needed, w.power FROM Wands AS w INNER JOIN Wands_Property AS wp ON (w.code = wp.code) INNER JOIN ( SELECT id, MIN(coins_needed) FROM Wands GROUP BY id, code, power ) AS T ON (w.id = T.id) WHERE wp.is_evil = 0 ORDER BY w.power DESC, wp.age DESC 이 SQL은 왜 틀린건가요? 출력은 되긴 하지만 틀리다고 나오네요. 조인 중에서 INNER JOIN ( SELECT id, MIN(coins_needed) FROM Wands GROUP BY id, code, power ) AS T 이부분이 핵심인데요. 결국 GROUP BY 를 id, code, power를 하나 code, power를 하나 같지 않는건가요? 결국 해당 GROUP BY 를 해서 coins_needed가 가장 작은 액수만 출력하게 했고 그것을 전체 출력해서 INNER JOIN통해 필터링 하는 전략을 세워보았습니다. 이론상 틀리지 않아 보이는데... 제 주관적인 생각입니다 ㅠㅠ 이유가 무엇일까요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
안녕하세요 선생님 lock과 spinlock에 대해서 질문드립니다.
예전 스핀락 설명 하실때 메모한 내용입니다. 락을 걸고 있는 상대방이 조금만 기다리면 놔줄 것 같다는 확신이 있을 때는 굳이 Context-Switching까지 가지 않고 무식하게 대기하는 SpinLock이 좋습니다. 비행기 1인 화장실 앞에서 대기하는데, 안에서 손 씻고 있는 소리가 들린다면, 굳이 자리에 돌아가서 대기하기 보단 문앞에서 조금만 더 기다리는게 현명합니다. MMO에서 lock을 쓰는 경우는 대부분 컨텐츠의 멀티쓰레드 경합 처리에서 사용하게 되는데, 어마어마하게 오래 걸리는 작업이 아닌 경우가 많기 때문에 SpinLock이 대부분의 경우에서 유리합니다. 질문 컨텍스트 스위칭이라는게 a쓰레드가 공유 자원을 다쓰고 쓰레드 풀로 들어가면 b라는 쓰레드가 공유자원을 획득해서 사용하는 걸로 알고 있는데 그러니까 프로세스 내부에 stack 공간만 바뀌는 스핀락이라는게 무한 반복 타고 들어가서 계속 기다리잖아요 상대방이 빠져나올떄 까지 lock은 접근 했다가 a라는 쓰레드가 사용중이네 글멈 나는 다른 작업 하고 이따 한번 더와바야지 이 개념이 아닌가요? 여기서 왜 컨텍스트 스위칭이라는 표현을 쓰셨는지 여쭤봅니다? a가 가고 b가 들어가야 컨텍스트 스위칭이 성립되는 게 아닌가요?
-
미해결[리뉴얼] React로 NodeBird SNS 만들기
mysql 테이블 수정시
안녕하세요 이런식으로 테이블을 만든 이후 수정할 수 있을까요? id 하고 content 사이에 nickname 이라는 컬럼을 하나 더 넣고 싶은데 아예 테이블을 삭제하고 다시 만들어야 하나요?
-
해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL
해커랭크에서 오류가 생길 수 있나요? ㅠㅠㅠ
영상보고 코드 똑같이 따라한 것 같은데도 결과값이 저렇게 나오네용 ㅠㅠ 유니온 연산 전 쿼리는 13 13 결과가 잘 나와서 위에 주석 처리 해놨구요; 이후 쿼리 부분에서 계속 결과가 아무것도 안나오더라구요 보통 SQL은 오타 문제일 수도 있어서 여러번 살펴보기도 했는데 무엇이 문제인지 찾지를 못해 답답한 마음에 올려봅니다 ! 도움부탁드립니다 ^^;;; === 아래는 코드 부분 복사했습니다 ===== -- 13, 13 SELECT X, Y FROM functions WHERE X = Y GROUP BY X, Y HAVING COUNT(*) = 2 UNION SELECT f1.X, f1.Y FROM functions AS f1 INNER JOIN functions AS f2 ON f1.X = f2.Y AND f1.Y = f2.X WHERE f1.X < f2.Y ORDER BY X
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
북마크 룩업 강의에서 12:10 부분에서 질문드립니다.
1. 첫번째 질문입니다. NonClustered Index로 Index Seek를 하더라도 느릴 수 있는 이유가 RID값을 가지고 Heap Table에서 RID Lookup을 하는데, 데이터가 메모리에 없으면 하드디스크에서 가져와야 하기 때문에 느리다고 하셨는데, 그것은 비교대상인 Table Scan쪽도 마찬가지 아닌가 하는 생각이 듭니다. 그래서 NonClustered Index로 Index Seek를 하더라도 느릴 수 있는 이유가 될 수 없다는 생각이 듭니다. 2. 두번째 질문입니다. 결론 부분에서 Nonclustered Index가 악영향을 주는 이유가 북마크 룩업이 심각한 부하를 야기할 때라고 하셨는데, 북마크 룩업에서 심각한 부하를 일으키는 경우가 예시로 설명해주신 CustomerID와 ShipVia를 함께 검색하는 부분에서, ShipVia와 일치하는 정보를 찾기 위해 ShipVia가 일치하지 않는 Leaf Page까지 모두 검색해야 하는데, 이미 ShipVia가 어느 Leaf Page에 있는 지 알고 있는 경우와 비교했을 때 Leaf Page를 뒤지는(북마크 룩업) 행위가 더 많기 때문에 부하가 많은 거라고 이해했습니다. 그래서 북마크 룩업으로 인해 NonClusteredIndex가 느릴 수 있다. 라고 이해했습니다. 그래서 북마크룩업을 수행하긴 하는데 필요한부분만 진행하도록 인덱스를 만들어야 한다고 이해했습니다. 잘 이해했나요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
UNION 해커랭크 문제풀이 질문
Symmetric Pairs에서 UNION 후 마지막에 ORDER BY X를 해주는데, ORDER BY Functions.X로 하면 에러가 나는 이유는 무엇인가요? 제가 작성 한 SQL은 아래와 같습니다 SELECT Functions.X , Functions.Y FROM Functions WHERE Functions.X = Functions.Y GROUP BY Functions.X, Functions.Y HAVING COUNT(*) = 2 UNION SELECT Functions.X , Functions.Y FROM Functions INNER JOIN Functions as CompareT ON Functions.X = CompareT.Y AND Functions.Y = CompareT.X WHERE Functions.X < Functions.Y GROUP BY Functions.X, Functions.Y ORDER BY Functions.X
-
해결됨SELECT ALL FROM SQL
혹시 having 대신 where를 써도 되나요??
Having이랑 where랑 역할이 비슷한것같은데 차이점이 거의 없나요??
-
해결됨[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
unsigned 타입형은 어떻게 처리하는데 너무 궁금합니다.
안녕하세요 정말 강의 잘들고 있어요 감사해요 사랑해요 파트 1000000000까지 만들어주세요 ㅠㅠ! 제월급 여기다 다쓸께요 예전부터 궁금한게 있었는데 mssql은 unsinged를 지원하지 않는다고 알고 있는데 정말인가요? 그러면 게임서버 코드에서는 unsigned인 특정데이터를 사용하고 DB에 저장해야 한다고하면 이거는 어떻게해야하나요? 그냥 singed 도 맥시멈같이 엄청 크기때문에 뭐 상관없어 거기까지 가겠어? 라고 생각하기에는.. mmorpg게임이 오랫동안 서비스하면 수치가 언젠간 끝에 다다를건데 음.. 보통 실무에선 어떻게 처리를 하나요 저런경우에는? 그냥 서버 코드에서도 unsigned를 사용안하게 제약을 걸어버리나요? 근데 보통 db에 저장되는 변수는 클라에서도 쓰고 서버에서도 쓰는경우가 많을텐데 클라 서버 둘다 제약을 걸어버린다? 건다해도 실무자들이 잘지키지도 않을것 같은데.. 음 잘 모르겠어요 mysql은 unsigned를 지원해서 상관없을것 같은데 mssql같은경우 unsinged어떻게 처리하는지 궁금합니다!
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
LIKE '%a%'
안녕하세요 강의 잘 듣고 있습니다. 예시에서 LIKE '%a%' 가 "a" 가 있는 모든 값이라고 하는데요, a로 시작하는 데이터랑 a로 끝나는 데이터도 포함하나요? 즉, %에 아무것도 안들어와도 되는 건가요?
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
스레드 락에 관한 질문입니다.
안녕하세요. 공부하면서 다시 질문이 생겨 문의 드립니다. 다음강의때 언급될 내용인건지 모르겠는데 본강의에도 언급이 되어서.. sql 서버를 스레드에서 접근하게 되면 내부적으로 알아서 처리하기에 락이 필요없다고 하셨는데. 혹시 sql 변수자체도 전역변수하나를 동시에 접근해서 사용해도 되는지요? 아니면 스레드로컬변수로 스레드당 하나씩 생성해야 되는걸까요? 개인적인 생각에는 처음 할당 초기화때만 동기화에 조심해야 되는걸까 싶습니다. 그리고 레디스 변수도 똑같은 질문을 드립니다(레디스도 내부 처리는 알아서 동기화 해주는걸로 알고 있습니다). 여튼 바쁘신 와중에도 강의 꾸준히 올려주셔서 감사드리며 다음 강의도 손꼽아 기다리고 있겠습니다.
-
미해결성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법
char(); 함수 반환값이 영상과 다릅니다.
char(97); -> 0x61 영상대로라면 char(아스키코드); 는 해당 아스키코드의 문자를 반환하는걸로 나와있는데 실제론 위와 같이 '0x61'이라는 값이 나옵니다. 왜 저런 결과가 나오는지 잘 모르겠습니다ㅏ
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
복합 인덱스 강의 중 궁금한 사항이 있어 질문 드립니다.
안녕하세요. 복합 인덱스 강의를 듣다가 이해가 잘 되지 않는 부분이 있어 질문드립니다. 강의 중에 "인덱스(A, B) 사용중이라면 인덱스(A) 없어도 무방 하지만 B로도 검색이 필요하면 인덱스(B)는 별도로 걸어줘야 함"이라는 부분이 잘 이해가 되지 않습니다. 위의 말의 뜻은 인덱스(A, B) 형태로 복합 인덱스를 사용한다면 인덱스(A, B)를 이용해 검색을 하거나 인덱스(A)를 이용해 검색을 한다면 별도로 인덱스 A만 사용해서 별도의 인덱스를 만들 필요가 없다는 뜻이고, "B로도 검색이 필요하면 인덱스(B)는 별도로 걸어줘야 함"이라는 건 인덱스(B)만 사용해서 뭔가 검색을 하고 싶을 때는 인덱스(B)를 별도로 만들어서 사용해야한다.라는 뜻인가요??
-
미해결[C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part5: 데이터베이스
redis 관련 질문
안녕하세요 강의 정말 잘 듣고 있습니다. 강의중에 redis가 윈도우서버에 정식 지원 안된다고 하셨는데 그럼 윈도우서버 환경에서는 redis를 활용해서 서비스는 불가능한가요?
-
미해결[백문이불여일타] 데이터 분석을 위한 중급 SQL
LeetCode CASE문 WHEN절을 사용한 1179번 문제 질문입니다.
안녕하세요. LeetCode 1179번 문제에서 헷갈리는 부분이 있어서 질문 드립니다. 우선 답안 해설 코드는 다음과 같다고 강의에서 보았습니다. SELECT id , SUM(CASE WHEN month = "Jan" THEN revenue ELSE NULL END) as Jan_Revenue , SUM(CASE WHEN month = "Feb" THEN revenue ELSE NULL END) as Feb_Revenue , SUM(CASE WHEN month = "Mar" THEN revenue ELSE NULL END) as Mar_Revenue , SUM(CASE WHEN month = "Apr" THEN revenue ELSE NULL END) as Apr_Revenue , SUM(CASE WHEN month = "May" THEN revenue ELSE NULL END) as May_Revenue , SUM(CASE WHEN month = "Jun" THEN revenue ELSE NULL END) as Jun_Revenue , SUM(CASE WHEN month = "Jul" THEN revenue ELSE NULL END) as Jul_Revenue , SUM(CASE WHEN month = "Aug" THEN revenue ELSE NULL END) as Aug_Revenue , SUM(CASE WHEN month = "Sep" THEN revenue ELSE NULL END) as Sep_Revenue , SUM(CASE WHEN month = "Oct" THEN revenue ELSE NULL END) as Oct_Revenue , SUM(CASE WHEN month = "Nov" THEN revenue ELSE NULL END) as Nov_Revenue , SUM(CASE WHEN month = "Dec" THEN revenue ELSE NULL END) as Dec_Revenue FROM department GROUP BY id 여기서 질문 드립니다. group by id를 수행하면서 select 문 내에 집계함수 SUM을 사용하셨는데, SUM 함수를 왜 사용한건지 잘 이해가 가지 않습니다..(즉, SUM 함수를 사용하지 않고 그냥 group by id 만 사용하면 틀린 답이 나오는데, 이 부분에 대한 설명 좀 부탁드립니다) 구글링을 해보니 group by 는 집계함수와 같이 사용해야 한다고 나와있긴 하던데...잘 이해가 가지 않네요 ㅜㅜ 또한 구글링 예시에서는 SUM 함수 말고 MAX 함수를 사용했던데, 결과는 SUM 함수를 사용했을 때와 동일하게 나오더군요. 이 부분에 대해서 자세히 설명해주시면 감사하겠습니다!
-
미해결[백문이불여일타] 데이터 분석을 위한 기초 SQL
WHERE 절 공부를 다 끝냈는데
WHERE CITY NOT LIKE 'a%' WHERE CITY NOT LIKE 'e%' WHERE CITY NOT LIKE 'i%' . . . . 이렇게 똑같은 구문을 여러번 반복한 경우에 묶어줄 수 있지 않나요? 괄호도 써보고 이것저것 해봤는데 코딩이 안 먹혀서 답은 못 찾았는데 구문이 똑같은 경우에 좀 더 간단하게 쓸 수 있는 방법은 없는지 궁금합니다.
-
해결됨[백문이불여일타] 데이터 분석을 위한 중급 SQL
SUM() 함수 문의
안녕하세요- 리트코드 1179 Reformat Department Table 문제 풀이에서 SUM() 을 왜 사용하는건가요? ㅠ.ㅠ 선생님 해설 이전에 sum 을 사용하지 않고 코드를 실행했더니 jan 값이 두개가 null 이 출력되면서 오답이라고 떴는데, 여기서 왜 SUM 함수를 사용해야 제대로된값이 출력되는지 흐름이 이해가안됩니다 ㅠ_ㅠ
-
미해결성공적인 SQL 인젝션 공격을 위한, SQL 기본 문법
dB 이름 변경은 어떻게하나요?
애초에 데이터베이스 만들때 example을 오타로 exampel로 만들었는데 이거 이름 변경은 못하나요?!