본문 바로가기

MySQL26

16# 프로시저에서 DataTable 대신 사용 방법. C#에 있는 DataTable은 너무 많은 정보를 들고 있어 무겁기에 비슷하지만 더 가벼운 형식으로 구현. MySqlTable Class 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100public class MySqlTable { public List Columns { get; set; } public string AddColumn { set { if (Columns.Contains(value) == true) .. 2019. 3. 11.
스테이지 스코어 저장. 유저 게임 STAGE별 점수 데이터가 필요하는 요청.STAGE는 현재 300개가 존재한다. 문제1. 유저 한명당 300개의 Column을 집어 넣을 것인가.문제2. 게임을 자주 하지 않거나 아예 안하는 유저들이 존재.문제3. 테이블이 커지면 인덱스도 커진다. 속도 저하.문제4. Insert를 자주 일어나게 할것인가. 처음에 Insert 후 Update를 사용할 것 인가. 생각1. 그러면 유저 한 명당 6개의 레코드와 50개의 필드로 나눌 것인가. 아니면 더 증가 가능. 10 x 30생각2. 100만 레코드로 조금씩 조회가 느려진다면. 10만명이 게임을 하면 100만 레코드.생각3. 테이블을 미리 나눈다면. 어떻게 관리할 것인가. 결론1. STAGE 클리어를 전부 하지 않으니 해당 스테이지를 업데이트할 때.. 2019. 3. 11.
Mysql 엔진 InnoDB 스토리지 엔진 특성(MS-SQL과 거의 유사) 기본 키에 의한 순차 저장 잠금이 필요 없는 일관된 읽기 4단계 읽기 단계로 인한 레코드(ROW 레벨) 락 제공 - 데이터 변경 전 Undo 로그 사용 - READ-UNCOMMITTED - READ-COMMITTED - REPEATABLE-READ-COMMITTED 외래 키 지원(물리적 개념은 알지만 거의 사용 안해봄) 자동 데드락 감지 자동화된 장애 복구 데이터 파일 손상 시, 강제 리커버리 하는 듯 MyISAM - OS의 캐시 기능 사용, 캐시 우선 순위 밀릴 수도 있음, 당연히 그러면 느려짐 MEMORY - 테이블 용량의 최대 크기를 가지고 있다. - 고정 길이 컬럼만 사용 VARCHAR = CHAR와 동일하게 공간 할당 - BLOB, TE.. 2019. 3. 7.
Mysql Update Select 결제 이벤트가 연장되었는데 중간에 비어있는 날이 존재하여 몇 분 끄적여서 만들어 본 쿼리가격이 맞는지 검색해서 원본 테이블에 업데이트 형식 12345678910111213141516171819UPDATE `event_user_market_buy` AS aINNER JOIN( SELECT a.`user_key` , (a.`buy_money` + b.`shop_price`) as `sum_price` , truncate(((a.`buy_money` + b.`shop_price`) / 30000), 0) as `sum_send_count` FROM `event_user_market_buy` as a INNER JOIN ( SELECT sum(`shop_price`) as `shop_price`, `user_k.. 2019. 1. 11.