프로와 아마추어의 차이 / 아마추어의 습관 / 스토리 텔링 / 이야기 강의 / 시나리오 공부 / 시나리오쓰기 / 영화시나리오 / 소설 / 웹툰 / 웹소설 / 스토리 작가

스토리를 만들 때 있어서 프로와 아마추어의 차이 스토리를 만들 때 있어서 프로와 아마추어의 차이 에 대한 이야기를 한번 해볼 건데요 어떤 이야기를 떠올린다 고 합시다 정말 계획도 없고 엉망인 이야기를 하나 주절주절 대보죠 한 아이가 있습니다 아빠는 재혼을 여러번 하셨는데 새 엄마들과 사이가 항상 좋지 않았습니다 지금의 새엄마는 의사입니다 자기보다 돈을 벌지 못하는 아빠를 무시합니다 아빠는 자격지심이 있지만 내색하지 않으려 합니다 아빠는 꿈이 있었거든요 블라 블라 블라 블라 2단계 에서 아마추어 의 경우 최초의 발상을 어떻게 하면 더 재미있게 보여줄까 에 대한 고민을 합니다 그 과정은 대략 이렇습니다 아이의 아빠는 재혼을 여러번 했고 지금 새엄마는 의사인데 사이가 그닥 좋지만은 않아 그럼~ 아빠는 꿈을 향해 달려가지만 의사인 엄마는 돈도 안 되는 일에 매달려 있는게 한심 해서 아이에게 폭력을 휘두르겠지 흐흐흐 하지만 결국 아이의 노력으로 가정은 행복을 되찾게 됐는데 아이가 무슨 노력을 해야할까 어~ 친구들 한테 한번 들려줘 보자

친구들에게 들려줘져 봅니다 친구 A : 뭔 소린지 모르겠어 재미없어 개 극혐 혹은 친구 B : 따뜻한 드라마 구나 감동 스러워 작가 지망생 길동이는 이렇게 생각하겠죠 A 는 이해력이 딸리는구나 개극혐 꺼져버렴 역시 B는 보는눈이 있어 비록 못생기고 냄새 나지만 가는 길에 츄파츕스 라도 하나 물려 줘야 겠어 흐뭇~ 친구 B 와 몇 번 정도 더 이야기를 해 보다가 그게 만화가 되었건 소설이 되었건 어떤 형태의 콘텐츠로 만들어 냅니다 대중에게 혹은 공모전에 제출합니다 광 탈 세상은 보는 눈이 없어 썩어빠진 세상 흑흑흑 그럼 이번에 프로 의 경우를 지켜 볼까요 발상 단계는 동일합니다 하지만 그 발상 에서 어떤 부분을 써먹을 수 있는지에 대한 고민을 합니다 똑같은 위에 저 문단에서 재혼을 여러번한 아빠와 지금 엄마 그리고 아이셋 세 단어를 먼저 캐치 합니다 그리고 그 단어를 이리저리 굴려 보며 이야기를 여러 방향으로 전개 해 봅니다 아빠가 죽은 뒤 일곱번째 새 엄마와 아이가 살아가는 이야기 라는 기회 초안이 나왔습니다 그 기획을 주위 몇몇 개성 넘치는 냉철 하거나 사려 깊거 나 분석적 이거나 다양한 형태의 사람들에게 보여 줘 봅니다 의견들을 모두 메모하고 조합해서 내가 바꿀 수 있거나 납득하는 부분들을 모조리 다시 뜯어고쳐 봅니다 이야기는 이제 이런 식으로 바뀌었습니다 스물 일곱번째 새 엄마와 함께하는 실종된 아빠 찾기 아이는 26번째 25번째 역으로 거슬러 올라가며 아빠에 대한 단서를 찾아 가고 엄마들의 대한 기억과 자료를 의존해 가며 스물 일곱번째 지금의 엄마와 함께 아빠를 찾아 가는 이야기가 되었습니다 심지어 엄마의 직업조차 의사에서 경찰 혹은 변호사로 바뀌었습니다 그래야 이야기가 더 재미있게 풀려 갈 것 같았거든요 이야기의 목표는 아빠를 찾는 것이지만 아빠를 찾고나서 어떻게 진행될지는 이야기를 조금 더 굴려보고 더 좋은 방향으로 수정하기 위해 남겨둡니다 정리해보자면 아마추어 의 경우에 최초 발 사이라 맹신을 한다는 겁니다 뭔가 엄청나고 대단한 것을 발견한 야오이 고이 간직하고 그 이야기의 우리 이야기의 심연 까지 내려가 버립니다 그 이야기는 절대 훼손 되어선 안 되고 심지어 누군가 이야기에 대한 잔소리를 하면 화를 내고 눈물을 흘리기 까지 합니다 결국 끝까지 스토리를 밀어붙이며 어떻게 이 스토리를 더 재미있게 보여줄 수 있을까에 대한 고민만 합니다 그러나 뿌리가 썩어 있는 식물인데 꽃이 피지는 않겠죠 상업 대중 예술을 할 때 가장 중요한 건 그 컨텐츠가 재미가 있는가 여야 합니다 내가 보여주고 싶은 이야기가 중심이 아니란 말이죠 최초의 발상 단계에서 어떻게 재구성해야 거 재밌어 지고 먹히는 이야기로 발전 할까를 고민하는게 프로 스토리텔링 이겠죠 스토리 뭔가 막히고 있으면 10중 8 9 그 길은 잘못된 길입니다 오래 생각하고 묵은 스토리 일수록 더 고통스럽고 더 빠져나오기 힘든 미로가 되어 있을 테구요 명작은 연필이 아니라 지우개 에서 나온다는 말이 있죠 아마추어가 프로로 전향하는 가장 첫번째 단계는 최초의 발상 에서 진행된 그 스토리 그 스토리야 말로 그 발상에서 진행할 수 있는 가장 재미없는 프로토타입 임을 인정 할 것 이 되겠네요 덜어내고 깎아내는 행위에 대한 유명한 일화가 있어서 들려 드리며 이번 시간을 마무리 해 볼까 합니다 르네상스의 거장 미켈란젤로에게 제자들이 물었다 선생님은 어떻게 다비드상 같은 멋진 작품을 창조 할 수 있습니까 그 질문에 대해 미켈란젤로는 기막힌 대답을 했다 창조라니? 다비드는 이미 대리석 안에 존재하고 있었어 나는 대리석 안에 들어있던 다비드를 꺼내기 위해 필요없는 부분들을 털어 냈을 뿐이라고 이번시간은 여기까지구요 다음시간에 또 찾아오겠습니다 이 얘기할 때마다 너무 오그라드는데 구독과 좋아요 버튼을 눌러 주시면 다음 콘텐츠 제작도 내서 해보겠습니다 오 마이 갓!! 으 안뇽히 계세요

프로 작가가 되는법 작가가 되려면 누구나 알고있지만 아무도 하지 않는 출판사 투고 시나리오 기법 시나리오 작가 작품소개 기획서 쓰는법

내 작품 돈받고 파는 방법 일반적으로 거의 모든 컨텐츠는 당연히 완성되지 않은 상태에서 매체에 컨택이 됩니다 작가의, 작품의 가능성을 보고 일이 시작되는 거죠 영화든 만화든 소설이든 예능프로그램 이건 어느 분야 건 콘텐츠 시장 이라면 모두가 동일합니다 구독과 좋아요 버튼 눌러주시면 감사하겠습니다 웹소설 도전만화 유튜브와 같이 독자의 뷰수 자체가 판단 기준이 되는 시스템은 작품을 직접 만들어 가며 부딪히는 것이기에 직관적이고 정직한 반면 언제까지 허공에 내 컨텐츠들을 뿌리고 있어야 하나 하는 느낌을 받게 되죠 그러다 보면 크리에이터의 삶 자체가 피폐해지는 경우가 허다합니다 작품을 잘 만들기만 하면 재밌게 만들기만 하면 당연히 인기를 끌지 않을까라고 생각할 수 있겠지만 세상에는 너무나도 많은 상품들이 존재합니다 정말 재밌고 훌륭하고 멋진 작품이지만 빛을 보지 못한 작품도 셀수없이 많구요 그렇다면 아마추어가 프로로 가기 위해 요구되는 첫번째 자질이 있다면 무엇일까요? 영업력 창작의 분야에서 스토리텔링 이라 불리는 그것입니다 영업력 이라고 해서 정장을 입고 서류 가방을 꺼내 골라골라 자바 자바 골라 이거 하나만 잡사 바 같은걸 하라는 건 아니구요 내 작품을 모두 만들어 보여주는 것보다 직관적이고 좋은 방법은 없겠지만 백화가 될지 200화가 될지 모르는 내 작품 아주 조금은 더 효율적인 방법에 대한 이야기를 해보려 합니다 단도 직입적으로 말씀드리자면 에이전시 나 출판사 혹은 해당 콘텐츠 플랫폼 서비스 매체 직접 투고를 하는 것입니다 이런 얘기를 많은 아마추어 작가 지망생들이과 나눠 봤는데 신기한 건 거의 대부분은 난 아직 아마추어에 아무것도 없는 방구석 글쟁이인데 내가 그런데 이 메일을 보낸다고 해서 개들이 콧방퀴나 꿔 줄까? 라는 생각을 한다는 겁니다 물론 어느 정도 맞는 이야기이긴 합니다 작품을 보내는 방식의 스토리텔링이 전혀 되어있지 않기 때문인데요 아마추어 의 경우 대부분은 작품 자체는 혼을 갈아 넣어 열심히 만드는 데 작품의 소개에 대한 고민은 1도 하지 않습니다 왜 이러는 걸까요 그래서 오늘은 상대방이 돼 작업을 소개 하기 위한 방법에 대한 이야기를 해보려 합니다 우선 신인의 경우 내 이야기가 조금은 만들어져 있어야 합니다 적어도맛뵈기라 할 수 있는 1막 정도는 만들어 둬야 그 레퍼런스를 토대로 담당자를 구워 삶을 수 있겠죠 이 메일을 보낸다고 가정 해 봅시다 우선 작품 투어에 경우 작가의 입장에선 무엇보다 소중한 내 작품이지만 그들의 입장에선 하루에도 수없이 쏟아지는 몇 백 몇 천 개의 작품 중 하나일 뿐이라는 걸 잊지 말아야 합니다 기본이 중요합니다 이름과 연락처 이메일주소 등의 간략한 자기소개는 반드시 들어가야 하구요 형식적인 안부인사 정도도 넣어 주시면 좋겠죠 첨부파일에 내 컨텐츠들을 보기좋게 정열의 압축해 넣어둡니다 파일 이름 또한 룰이 있습니다 예를 들어 지난번 강의에서 나왔던 27명의 새엄마를 가진 아이 이야기를 보낸다고 가정해 봅시다 파일 이름에 반드시 들어가야 하는 건 제목 회차 작가명 입니다

3회까지 만들어 두었다는 가정이라면 이런식으로 보기좋게 정렬한 뒤 압축 파일을 만들어 이쁘게 첨부 해 줍니다 담당자는 하루에도 수없이 많은 작품 투고를 받는 직업이기에 내 컨텐츠를 이해하기 쉽도록 가장 직관적인 형태로 설명해 주는 것이 중요합니다 파일의 이름 정리는 가장 기본이고 프로 작가라면 누구나 간과하지 않는 부분입니다 예를 들어 이런 파일 꾸러미 라면 기본이 되지 않은 작품이라 생각하고 확인도 하지 않을 확률이 큽니다 파일첨부 까지 완료 했다면 다음은 가장 중요한데 작품 소개서 입니다 주로 기획서 라 불리는 그것이죠 한글 파일인지 pdf 파일인지 표를 이쁘게 써야하는지 서식 도표 등등 서류의 형태는 크게 중요하지 않습니다 다만 내용에 대한 순서는 정말 중요합니다 1 훅 한줄 기획을 말하는 거죠 2 시놉시스 10 줄 내외로 재미있게 설명하는 파트입니다 3 트리트먼트 이 컨텐츠에서 재밌거나 경쟁력 있는 신들을 무작위로 얘기해 보는 파트입니다 4

전체 스토리 작품의 커다란 스토리 줄기를 말합니다 아니 내용만 좋으면 되지 서류니 형식이니 뭔 개풀 뜯어먹는 소리야 라고 하실 수 있습니다만 우리는 작품을 완성하지 않은 상태에서 누군가에게 내 스토리를 설명해야 하는 상황입니다 일종의 설득의 심리학 인데요 모든 사람의 취향은 같지 않기에 대화를 할 땐 상대방에게 상상의 여지를 남겨두어야 합니다 담당자를 직접 만나 설득하는 상황을 가정해 봅시다 스물 일곱번째 새엄마와 실종된 아빠를 찾아가는 이야기 에요 27번째 새엄마? 음~ 아이가 엄청 어둡겠군 슬픈 이야기가 되겠어 그래서요 그 다음은요? 까지 만 나와도 절반은 성공한 것입니다 상대방의 호기심을 이끌어 낸 것이라 내 스토리를 조금 더 디테일하게 이야기할 기회를 얻은 것이 되거든요 시놉시스 지금 새엄마는 경찰인데 아빠가 갑자기 실종된 게 예전에 새 엄마들과 관계가 있을 꺼라 의심 하거든요 그런데 아는게 없으니 아이의 기억을 통해서 하나씩 상황을 유추해보면서 추리해 나가는 거죠 오~ 추리물인가? 근데 왜 엄마는 27명이나 있는 거야? 조금 비 현실적인 거 아닌가? 아빠는 어떤 사람이길래 결혼을 스물 일곱 번이나 한 거에요? 조금 억지스러운 것 같은데 27명이 좀 많죠? 하하 혹시 몇명 까지 알아보시고 오셨어요? 아까보다 좀더 대화에 활력이 돋습니다 여기까지 오게 하는 게 힘들지 막상 여기까지 나온다면 이야기는 상당히 수월해집니다 담당자가 27명이 많다고 한다면 원하는 대로 깎아줘도 관계 없습니다 일단 사게 하고 내 맘대로 한다는 마인드 내가 만들어 둔 내 스토리의 세부적인 이야기를 조금 더 그 사람이 재밌게 들어 주기 시작합니다 담당자의 조언도 들어가며 수정하거나 개선도 해나가며 이야기를 끝마친다면 그 다음은 이야기 한번 진핸해 보죠 혹시 다음주까지 오늘 이야기 한거 토대로 스토리 정리 해서 다시 한번 보내주실래요? 그렇다면 반대로 처음부터 내 스토리에 대한 내용을 스토리텔링에 대한 고민 없이 구구절절 이야기 해 본다고 가정해 봅시다 한 아이가 있는데 이야기는 성격이 조금 어두워요 아빠가 재혼을 여러번 하셨거든요 지금 새엄마는 경찰인데 아빠가 인물 하나는 타고나서 재혼을 여러번 해도 관계 없다는 마인드로 결혼을 하긴 했어요 물론 사이가 안좋아서 이번 새 엄마도 곧 태어날 것 같긴 한데 어쨌든 이야기 시작은 아이가 학교 돌아오는 길 부터 시작하는데요 블라 블라 블라 블라 블라 블라 자꾸 이런 식이라면 담당자는 내 이야기에 집중도 하지 못했을 뿐더러 내 이야기에 대한 매력 포인트를 잡아 내기 힘듭니다 장르가 뭐지 이야기의 주인공은 누구지 매력포인트가 어딨는지 생각할 여지도 없고 얘는 지금 뭐라고 떠들어 대고 있는 건가 내가 왜 지금 이 이야기를 듣고 있어야 하는건가 등 생각만 산만해지고 이야기의 끝은 결국 좋은작품 이지만 저희 매체와는 성격이 맞지 않는 것 같네요 뱌 뱌 썩어빠진 세상 두고보자 같은 이야기 같은 작가 같은 담당자 뭐가 이 차이를 맞는 것일까요 이야기를 보여주는 방식 즉 스토리텔링의 차이입니다 아무리 좋은 원석을 가지고 있다 할지라도 이것에 대한 가능성을 제대로 설명해 내지 못한다면 사람들은 내 원석을 돌덩이 취급할 것이고 플라스틱 싸구려 가짜 보석 이라 할지라도 이것에 대한 비전만 제대로 제시해 낸다면 사람들을 기꺼이 비싼 돈을 내고 그것을 사 갈 것입니다 이것이 영업력이고 창작의 세계에선 스토리텔링 이라 불리는 그것의 힘이죠 물론 도전 많아 웹소설 자유 연재등과 같이 독자를 직접적으로 만나가며 현장감 독자의 소리 들이 반영해 나가며 스스로의 틀려 글 쌓아 보는 경험은 훗날 무엇과도 바꿀 수 없는 엄청난 재산이 될게 분명합니다 하지만 본인의 기획에 대한 자신감이 있다면 내 기획이 정말 매력적이라 느껴진다면 기획서를 꼼꼼히 만들어 플랫폼 담당자에게 직접 투고 해보는 경험도 반드시 겪어 보시기 바랍니다 내 작품에 대한 현실적인 조언 가능성에 대한 피드백 등을 받아 볼 수도 있구요 혹시 아나요 정말 나만의 장점을 발견해 주는 담당자를 만나 그것이 계기가 되어 더 좋은 기회로 나갈지도 모르는 일이구요 이번 영상은 여기까지입니다 구독과 좋아요 버튼을 눌러 주신다면 100만년 동안 복받으실 겁니다 음 그럼 이만 즐거운 창작 하시기 바라겠습니다 감사합니다

시나리오 쓰기 책 딱 한 권만 본다면? 입문자를 위한 시나리오 작법서를 추천드립니다

안녕하세요 영화하는 나부랭이입니다 오늘은 짧게 시나리오 쓰기 관련해서 책 하나 소개시켜 드리려고 해요 아마 구독자분들 중에 이제 시나리오 쓰는 거에 관심이 계신 분들이 있을 거 같은데 서점에 가면은 시나리오 관련해서 책들이 엄청 많잖아요 그럼 이제 되게 난감해지죠 뭘 봐야 되고 뭘 참고해서 시나리오를 써볼까 저도 옛날에 했던 경험이라 유경험자로써 좀 시행착오를 줄여보고자 보편적으로 개인마다 좀 다르겠지만 보편적으로 어떤 책을 보는 게 좋은 건지 한번 추천을 해 보려고 합니다 그러니까 입문자 입장에서 딱 한 권만 보라고 하면 전 항상 이 책을 추천 하거든요 그게 뭐냐면요 바로 요 책입니다 한국형 시나리오 쓰기 심산 작가님이 쓰셨죠 참고로 전 이 책과 전혀 관련이 없고요 심산 작가님도 뵌 적이 없고 그냥 좋아서 추천 드리는 거니까 오해하지 마시고요 근데 워낙 유명하고 시나리오 작법 입문서로 워낙 스테디셀러라서 특별히 광고라고 생각하진 않으실 거 같아요 이 책이 왜 초심자 한테 좋냐면 다른 책이랑 비교해서 말씀드리는 게 편하겠죠 보통 다른 시나리오 서적의 문제점이 뭐냐면 보통 대부분 다 번역서 거든요 그니까 외국서적인데 그걸 번역 해놓은 책을 보고 공부를 해야 되는데 문제는 그 번역이 매끄럽지가 않고 어색할 때가 많아요 그리고 대부분의 이론서의 느낌이 강해요 좀 지루하고 어렵고 그리고 영화 예시들이 너무 클래식한 경향이 있어요 보통 미국인들이 쓴 영화서적들이라 미국영화가 베이스가 되는데 예시에 무슨 흑백 클래식 영화 옛날 영화 그나마 '카사블랑카'면 다행이죠 '카사블랑카'는 잘하면 볼 수도 있으니까 워낙 유명한 고전이라 근데 '스미스씨 워싱턴 가다' 이런 거 애매하잖요 보기가 찾아보기도 애매하고 찾아도 사실 보는 게 약간 고역이에요 그런 흑백영화나 뭐 예를 들어 우디 앨런 영화 같은 것도 많이 하는데 당연히 우디 앨런 영화도 되게 훌륭하죠 우디 앨런도 훌륭한 시나리오 작가고 영화도 재미있고 근데 지금 마블 영화 같은 영화를 보는 세대들이 그 친밀감이 없잖아요 그런 영화들에 그러니까 문제가 접근성이 떨어지고 뭔가 친근한 느낌이 없는 거에요 그 영화들이나 시나리오에 그래서 그 책들이 좀 지루하고 어려워서 사 놓고 그냥 안 보는 경우가 많은데 이 '한국형 시나리오 쓰기' 책은 예시들이 어쨌든 대부분 다 한국 영화고 물론 이 책의 한국 영화들도 지금 기준으로선 되게 클래식한 면이 있죠 거의 20년 전 영화들이니까 그래도 20년 전 영화지만 구하기가 훨씬 더 쉽고 찾아보기가 훨씬 더 수월하구요 그리고 그때 배우들이 지금도 활동하고 있기 때문에 보기가 좀 편하죠 영화들이 그리고 그때 뭐 레전드 찍은 '매트릭스'나 '식스센스' 같은 헐리우드 영화들도 예시로 많이 들기 때문에 영화 예시를 보기가 되게 편해요 좀 아트적인 영화도 예를 들기도 하는데 그 기준이 타란티노 정도 타란티노 영화 정도면 되게 그래도 지금까지 활동하고 있고 꽤 볼만 하잖아요 그리고 중요한 게 이 책은 심산 작가님이 좀 알기 쉽게 썼어요 약간 구어체 같은 느낌이 있어요 이론 서적이라기보다는 마치 독자들한테 강의하는 느낌이 강하거든요 왜냐면 심산 작가님이 실제 한국영화 현장에서 활동하셨기 때문에 이론가보다는 실무자의 느낌이 강해요 실무자의 경험으로 썼다는 것이 '시나리오는 견적서다' 이런 내용도 있고요 그리고 강의하듯이 주인공은 졸라 설치해야 돼 뭐 이런 식의 욕도 섞어가면서 좀 편안한 느낌으로 쓰셨죠 책을 그래서 저도 시나리오를 쓰기 전에 요거를 한번 쫙 훑어서 발췌독을 하고 '아 이런 얘기했었지 참' 하고 이제 다시 리마인딩 을 하고 작업을 하는 편이죠 암튼 전 초심자들한테 딱 한 권만 본다라고 하면 이 책을 추천해요 그 다음에 좀 더 공부하겠다면 본인 스타일에 맞게 책을 이제 시나리오 강의를 듣는 것도 좋은 방법이긴 한데 책으로만 일단 접해보고 싶다 책으로 공부를 개인적으로 하고 싶다 하면 이 책이 좀 접근하기가 편하지 않을까 싶어요 저 같은 경우는 이 책 다음에는 참고하는 서적이 '시나리오 시퀀스로 풀어라'라는 책이 있거든요 보통 시나리오는 여기도 나와 있지만 이제 '3막 구조'라고 해서 이 책에선 '3장 구조' 라고 하더라고요 아리스토텔레스가 '모든 극들은 3막으로 이루어진다'고 했거든요 그걸 기준으로 해서 시나리오도 쓰는데 소설도 마찬가지고 '시퀀스로 풀어라'는 이제 조금 더 영화적인 단위죠 그 3막을 더 이제 해체해서 여덟 개에서 열 개의 시퀀스로 시나리오를 나누는 거예요 근데 쓰다 보면 그 기준을 세우기가 되게 모호하기 때문에 참 어렵다 란 생각이 들었는데 '시퀀스로 풀어라' 그 책이 꽤 괜찮은 가이드라인이 되더라고요 그 책도 앞에서 말씀드린 그런 문제점 몇 가지를 갖고 있긴 한데 번역이 번역이라기보다 해석의 느낌이 강하거든요 왜냐면 번역하신 분이 전문 번역가가 아니라 어떤 감독님이 하셨더라고요 그래서 약간 어색한 문장들이 있기는 한데 그래도 꽤 괜찮은 책이라고 저는 생각하거든요 거기 나온 예시들도 약간은 오래된 영화들인데 그래도 '토이스토리' 1편 '에어포스원' 그리고 가장 최근 영화로는 '반지의 제왕 : 반지원정대' 1편이죠 그 영화도 예시가 돼 있거든요 그니까 그런 영화들이 친숙하고 어렸을 때 본 영화들이니까 조금 더 분석을 해놓은 거를 받아들이기가 쉬운 거 같아요 근데 이 책의 문제는 지금 절판이 되었다는 거에요 그래서 저도 그때 그때 필요할 때마다 그냥 도서관에서 빌려서 보는데 중고서적도 참 찾기가 어렵더라고요 이 책은 어쨋든 도서관 가면 아마 빌려가는 사람 없을 거예요 그래서 널럴하게 빌리기는 하는데 조금 불편한 점이 있긴 하죠 출판사에서 다시 찍어 줬으면 좋겠는데 그건 뭐 저희 힘으로 안 되니까 아무튼 그래서 시나리오에 대해서 관심이 있는 초심자 입문자 분들은 '한국형 시나리오 쓰기' 이 책을 추천하고요 꼭 시나리오를 쓰겠다는 생각이 아니고 뭐 제작을 꿈꾸거나 영화 기획이나 마케팅을 꿈꾸셔도 요거를 한 번 읽어놓으시면 어쨌든 시나리오를 읽어보셔야 될 거 아니에요 그럴 때 이제 시나리오를 볼때 조금 느낌이 다르고 영화를 볼 때도 시야가 좀 넓어지거든요 아니면 꼭 영화 일을 하지 않더라도 영화를 좋아하시거나 조금 더 딥(deep)하게 들어가고 싶으시면 이 책을 그냥 교양도서로 생각하시고 읽으셔도 그렇게 나쁠 것 같진 않습니다 가격도 착해요 15,000원인데 이게 안 올린 거거든요 2004년이 초판 인쇄인데 제가 이거 2007년에 샀거든요 근데 찾아보니까 지금도 15,000원이더라고요 다시 말씀드리지만 저는 이 책과는 전혀 관련이 없고요 그냥 여러 권을 보다보니까 그냥 이 책이 제일 낫다는 생각이 들어서 혹시 시나리오 쓰기에 관심이 있으시면 '이 책을 한번 읽어보시라'라고 추천을 해드리는 거예요 네 오늘 영상 이만 마치고요 다음에는 조금 더 알찬 내용으로 찾아뵙도록 하겠습니다 짧은 영상 끝까지 봐주셔서 감사하고요 오늘도 행복한 하루 되시길 바랍니다

[초점IS] '송-강-하-이' 없으면 영화 못 만드나

[초점IS] '송-강-하-이' 없으면 영화 못 만드나 충무로의 시나리오 쏠림 현상이 여전하다 송강호·강동원·하정우·이병헌, 이른바 A급 주연배우들의 선택을 받지 못하면 쉽사리 투자를 받지 못하는 상황이다

여배우가 설 곳을 잃었다는 최근 충무로에서 남자배우들의 사정도 크게 다르지 않다 나름대로 이름을 알렸고, 한류스타라 불리더라도 제대로 된 영화 시나리오를 받기 힘들다 극소수 A급 배우들이 거절한 시나리오를 무작정 기다려야 하는데다, 이들과 출연료가 현저히 차이난다 출연을 결정한다해도 투자가 잘 들어오지 않아 제작에 어려움을 겪는다 극장에 영화를 걸기까지 오랜 시간 높은 산 몇 개를 넘어야만 하는 셈이다

반면, 송강호·강동원·하정우·이병헌은 일년 내내 작품 대기 중이다 지난해 밀정(김지운 감독), 올해 택시운전사(장훈 감독)을 선보인 송강호는 차기작이 무려 세 편이나 결정돼 있다 마약왕(우민호 감독)은 촬영 막바지에 접어들었고, 이어 기생충(봉준호 감독)이 촬영에 들어간다 잠시 제작이 중단됐던 제5열(원신연 감독)도 내년 상반기 다시 크랭크인하는 것으로 가닥을 잡아가고 있다 최소 내후년까지는 송강호의 영화가 줄줄이 극장에 걸린다

마찬가지로 강동원은 골든슬럼버(노동석 감독)·1987(장준환 감독)·인랑(김지운 감독)으로 이미 촬영을 마쳤거나 촬영 중이며, 하정우는 1987·신과 함께(김용화 감독)·PMC(김병우 감독)로 끊임없이 관객을 찾아온다 이병헌은 추석 연휴 개봉하는 남한산성(황동혁 감독)과 최근 크랭크인한 그것만이 내 세상(최성현 감독)이 남아있다 모든 영화가 이들 네 배우, 송-강-하-이를 캐스팅할 순 없다 이들의 선택을 받지 못한 작품은 차선책으로 다른 배우에게 시나리오를 건넨다 문제는 투자다

송강하이가 나오지 않는다면 제대로 된 투자를 받기 힘들다 때문에 한 영화를 크랭크인하기까지 몇 년의 시간이 소요되기도 한다 한 제작사 관계자는 이름이 잘 알려지고 연기력도 인정받은 배우 B지만 막상 캐스팅하니 투자자가 나타나지 않아 어려움을 겪고 있다 투자사로부터 B로는 안 된다는 말만 돌아온다 본격적인 제작에 들어가지 못하고 차일피일 미뤄지고 있다고 밝혔다

배우들은 더 거센 불만의 목소리를 내고 있다 A급 배우들과 차별 때문에 영화를 포기하고 드라마만 출연하는 이들도 여럿이다 한류스타로 이름을 날린 배우 C의 관계자는 여러 아시아 국가에서 인기가 높아 드라마 캐스팅 제안은 많이 들어온다 유독 영화판에서는 찬밥 신세다 제대로 된 시나리오를 받아보기 힘들다며 A급 밑으로는 비교하기 힘들 정도로 출연료도 뚝 떨어진다

그렇다고 작은 영화에만 얼굴을 비칠 순 없어 영화 출연은 고려하지 않고 있다고 전했다 캐스팅 시장 독과점은 올바른 현상이 아니다 일부 티켓 파워를 가진 배우들에게만 관심이 쏠리면 피해자는 결국 관객이다 한 영화계 관계자는 모두가 A급 배우들에게만 매달린다면, 중간급 배우들에겐 기회마저 주어지지 않는다 종국엔 영화의 다양성 저해로 이어질 수도 있다고 말했다

RailsConf 2019 – Optimizing your app by understanding your PostgreSQL database by Samay Sharma

(밝은 팝 음악) -이 이야기는 앱 최적화입니다 Postgres 데이터베이스를 이해하면됩니다

제목에서 알 수 있습니다 내가 원했던 것 이 이야기에서 우리는 문제를 다룰 것입니다 당신은 응용 프로그램 사용자의 얼굴, 그들이 성과에 관하여 만드는 불평, 내 쿼리가 느리다는 말 또는 응용 프로그램 개발자로서 어떤 문제가 발생했는지 이해하기 응용 프로그램이 느린하고 다시 묶어 Postgres 데이터베이스에 저장합니다 그래서, Postgres가 당신에게주는 통계의 종류는 무엇입니까? 그래서 당신은 정확히 무슨 일이 일어나는지 알아낼 수 있습니다 무엇이 잘못 되었습니까? 그리고 그것을 고치는 법도 있습니다

그래서, 나 자신에 대해 조금 나는 사 메이다 나는 Citus의 엔지니어로 일하고 있습니다 Citus는 기본적으로 오픈 소스 확장 기능입니다 여러 컴퓨터에서 Postgres를 수평 확장 할 수 있습니다

그래서, 여러분이 단일 노드 Postgres 데이터베이스를 가지고있을 때 성능 문제가 발생하기 시작합니다 따라갈 수없는 당신이 싣고있는 작업 부하의 양과 함께, Citus를 사용하여 여러 서버로 확장 할 수 있습니다 저는 솔루션 엔지니어 팀을 관리합니다 그래서 우리가하는 일은 고객과 함께 일하는 것입니다 우리에게 오는 응용 프로그램 개발자 그들의 응용에 문제가있다

성능 관점에서, 확장 성 관점에서 그리고 그들은 그들의 데이터베이스를 키우기를 원한다 몇 테라 바이트, 수십 테라 바이트, 계속하는 동안 수백 테라 바이트 Postgres의 모든 이점을 유지합니다 그래서 저는 고객들과 함께 도움을줍니다 그들은 그들의 응용 프로그램을 모델링하고, 그들에게 데이터 모델링 등에 관한 권고안을 제시한다 데이터베이스를 확장하는 데 도움이됩니다

나는 나 자신에 관한 재미있는 사실을 포함하고 싶다 내 모든 슬라이드에 최근에 결혼 했어 약 4 개월 전 어떤 사람들은 나에게 재미있는 사실이라고 말하고있다 지금은 잠시 후 재미있는 사실이 아닐 수도 있습니다

(청중 웃음) 그래서 우리는 그것이 얼마나 재미있는지를 보게 될 것입니다 앞서 언급했듯이, Citus는 오픈 소스이며, 당신은 실제로 GitHub citusdata / citus에 갈 수 있습니다 그리고 우리를 그냥 주저하지 Citus에 대해 더 자세히 알고 싶다면, 나는 회의에서 주변에있을거야 우리는 그것에 대해 대화 할 수 있습니다

그러나이 이야기는 Citus에 관한 것이 아닙니다 이 이야기는 주로 Postgres에 관한 것입니다 제가 적용 할 얘기가 뭐든간에, 그것의 모두는 당신의 정상적인 Postgres 데이터베이스에 적용됩니다 그래서 때로는 당신이 직면하는 도전 각 문제와 관련이있다 데이터베이스 내에서 무슨 일이 일어나고 있는지

따라서 애플리케이션 관점에서 느린 쿼리가 표시 될 수 있습니다 또는 사용자가 올 수도 있습니다 내 앱 페이지가 가능한 빨리 로딩되지 않는다고 말하면, 등등 당신은 모니터링 도구 또는 귀하의 디버깅 등등, 문제가 데이터베이스에 있다는 것을 알 수 있습니다 데이터베이스가 느려짐의 원인입니다 자, 어떻게 그 문제가 무엇인지 발견합니까? 근본 원인을 어떻게 묶어 줍니까? 그리고 어떻게 그 문제를 해결할 수 있습니까? 그 문제를 해결하는 가장 간단한 방법 Postgres가 공개하는 통계를 사용하고 있습니다

그래서 Postgres는 실제로 많은 통계를 캡처합니다 ANALYZE를 실행할 때 데이터에 대해 또는 Postgres가 자동으로 ANALYZE를 실행하면, 그것은 많은 통계를 포착하려고합니다 귀하의 데이터에 대해 말하자면, 사용자가 이것을 필터로서 입력하는 경우, 선택도 비율은 어떻게 될 것인가? 따라서 모든 열에 대한 데이터를 추적합니다 또한 데이터베이스에 대해서도 마찬가지입니다 그것은 또한 당신에게 노출됩니다

활동에 대한 데이터를 수집하고이를 사용자에게 노출합니다 나는 통계를 여기에서 모니터링하는 것으로 버킷으로 만들고있다 기본적으로 쿼리 란 무엇입니까? 지금 시스템에서 실행 중입니까? 얼마나 많은 연결이 데이터베이스에 들어 옵니까? 어떤 인덱스가 사용되고 있습니까? 어떤 인덱스가 사용되고 있지 않은가? 얼마나 많은 IO가 수행되고 있습니까? 모든 정보가 실제로 캡처됩니다 Postgres 내의 다른 테이블에서 당신에게 노출되면 당신은 그것들을 정규 표로 질문한다 필요한 정보를 얻으십시오

그리고 몇 가지 관리 통계가 있습니다 관리 서비스를 사용하는 경우 당신은 그들에 대해 조금 신경을 써야합니다 하지만 당신은 관리 서비스 공급자 서버 관리 통계에 신경을 써야합니다 복제는 어떻게 유지됩니까? 데이터베이스의 크기는 얼마입니까? 다른 테이블의 크기는 얼마입니까? 이렇게 자, 내가하려고 할 것은 시작부터 시작하는 것입니다

매우 일반적인 문제, 즉 내 응용 프로그램이 느리다 그리고 모든 사람들이 매번 그 느낌을 갖게 될 것이라고 확신합니다 나는 아무도 말한다라고 생각하지 않는다, 나의 신청은 훌륭하다 항상 빠릅니다 그래서 우리는 그 문제부터 시작할 것입니다

우리가 데이터베이스에 묶여 있다는 것을 알아 냈다고 가정 해 봅시다 우리는 어떻게 거기에 도착합니까? 그래서, 문제는, 내 응용 프로그램이 느립니다 증상, 응용 프로그램 사용자 느린 성능에 대해 불평하고 있습니다 어떤 모니터링 도구를 사용하든, 그것은오고 대부분의 시간을 지적한다 데이터베이스 호출이 진행 중입니다

어쩌면 일정량의 데이터베이스 호출 일 수도 있습니다 어쩌면 그것은 데이터베이스 전체 일 것입니다 그리고 그들이 로딩하고있는 페이지가 무엇이든간에, 모든 것이 천천히 진행되고 있습니다 그리고 당신의 페이지는 만들고 있습니다 수백 개의 데이터베이스 호출을 가정 해 봅시다

어떤 쿼리가 느린 지 알지 못합니다 당신은 정확히 무슨 일이 벌어지고 있는지 모른다 그래서, 어떻게 거기에서 시작합니까? 좋은 출발점 데이터베이스 캐시 적중률을 조사하는 것입니다 따라서 캐시 히트 비율은 실제로 어떤 비율입니까? 얼마나 많은 검색어를 캐시에서 서비스되고 있습니다 대다수가 그것으로부터 오는 것인가, 디스크에서 읽어야한다고 가정 해 봅시다

느낌을 얻는 좋은 방법입니다 데이터베이스가 있어야하는 위치와 데이터베이스가 꺼져있는 위치 거래용 앱의 경우 실제로 원하지 않는 가장 일반적인 작동을 위해 디스크를 쳤을 때, 그래서 당신은 95 % 이상이되고 싶습니다 이상 적으로 캐시 적중률 99 % 또는 귀하의 트랜잭션 애플 리케이션을위한 이제 응용 프로그램에 따라, 애널리틱스 애플리케이션이있는 경우 어디 실제로 저장하는, 10 테라 바이트의 데이터를 가정 해 봅시다

10 테라 바이트의 메모리를 사는 것은 비쌀거야 캐시 히트 비율을 낮추는 것이 좋습니다 하지만 일반적으로 트랜잭션 애플리케이션의 경우는 그렇지 않습니다 자, 질문은, 어떻게 이것을 측정합니까? 어떻게 내가 그걸 지켜 볼 수 있니? 이 연설을 통해 나는 몇 가지 Postgres 테이블을 다룰 것이다 다른 정보가 무엇인지를 통해 이야기하십시오

그들이 제공 할 수있는 방법을 차례로 사용할 수 있습니다 응용 프로그램 성능을 향상시킵니다 pg_statio_user_tables에서 배울 수있는 간단한 쿼리 이건 내가 이야기 할 테이블 중 하나야 얼마나 많은 힙 블록을 읽었는지 계산합니다

전문 용어 관점 힙은 실제로 Postgres가 데이터를 저장하는 곳입니다 인덱스는 인덱스입니다 그래서 그들은 반드시 힙의 일부가 아닙니다 내가 힙 블록을 읽을 때 기본적으로 얼마나 많은 블록을 읽었는가? 힙에서 몇 블록을 맞았습니까? 그리고 그 비율, 블록의 수가 너무 많아서 숫자로 나눈 힙 + 읽기, 종류는 당신에게 비율을 준다

그래서 당신은이 비율을 보았습니다 그것은 pg_statio_user_tables를 사용하고있다 이 데이터의 출처로 테이블이 포착하는 정보를 살펴 보겠습니다 이 테이블의 예제 행에 불과합니다 내가 만든 테이블 중 하나에서

그래서, 테이블의 이름은 무엇입니까? 이드는 뭐니? 스키마 란 무엇입니까? 나는 그게 전부라고 생각합니다 단지 표준적인 것입니다 힙에 대한 정보를 유지한다는 것을 알 수 있습니다 또한 인덱스에 대한 정보를 유지합니다 색인 블록을 읽은 횟수를 알려줍니다 Postgres 버퍼 캐시에서 대, 그것은 버퍼 캐시에서 해당 레코드를 찾을 수 없습니다 그래서 그 기록을 읽어야했습니다

테이블 히트 비율을 얻는 것 외에도 이 테이블에서 인덱스 적중률을 얻을 수도 있습니다 어쩌면 인덱스가 메모리에 맞지 않을 수도 있습니다 그게 당신이 풀어야 할 문제입니다 이들 둘 모두에 따라, 이 테이블에서 그 정보를 찾아 낼 수 있습니다 토스트와 같은 다른 정보도 있습니다

토스트 (Toast)는 매우 큰 기둥이있는 경우입니다 Postgres는 실제로 그들을 압축합니다 별도의 장소에 보관합니다 그래서 그것에 대해서도 측정 할 수 있습니다 거대한 JSON BLOB가 있다고 가정 해 보겠습니다 당신이 Postgres 테이블에 그리고 너는 알아 내고 싶어

디스크에서 읽는 것이 주요 병목입니다 이걸 알아 내면 비율을 구할 수 있습니다 그들 중 어떤 사람이이 문제를 일으키는 지 확인하십시오 캐시 적중률이 낮다는 것을 아는 것만으로도, 캐시 히트 비율이 낮다고 가정 해 봅시다 실제로 많은 것을 의미 할 수 있습니다

그게 네가 할 수있는 것이 아니라는거야 버퍼 캐시에서 작업 부하를 제공하는 방법 하지만 왜 디스크에 갈 필요가 있니? 그리고 그것으로 가능한 문제점은 무엇입니까? 여러 가지 원인이있을 수 있습니다 처음 두 점은 팽창과 자동 진공에 대해 이야기합니다 얼마나 많은 사람들이 자동 진공관에 익숙합니까? 좋아요 기본적으로 Postgres에서 행을 업데이트하거나 삭제할 때마다, Postgres는 반드시 동시에 삭제하지 않습니다

행에 표시되지 않는 것으로 표시합니다 거래를 시작하자 거래 후 그리고 나서 진공이라는 프로세스가 있습니다 와서 모든 행을 정리합니다 그리고, Postgres에는 자동 진공 장치가 있습니다

자동으로 트리거됩니다 수동으로 진공을 트리거 할 수 있습니다 말하자면 모든 행을 정리하자 더 이상 사용되지 않는 하지만 기본적으로 Postgres에는 자동 진공 장치가 있습니다 당신은 그것을 공격적으로 조정할 수 있습니다

또는 덜 공격적이어야합니다 그리고 나서, 당신의 자동 진공관이 충분히 잘 조정되지 않았습니다 그래서 늙은 행을 정리하지 않는거야 그래서 당신은 매우 나쁜 히트 비율을 얻고 있습니다 귀하의 캐시에서

실제로 Bloat은 사용되지 않은 데이터의 덩어리입니다 그것은 일반적으로 부 풀리는 것으로 알려져 있습니다 그래서 당신은 말할 것입니다, 좋아요 테라 바이트의 데이터는 200GB에 불과할 것입니다 실제로 사용할 수있는 데이터입니다

그것의 나머지는 단지 autovacuum이 그것을 깨끗하게 할 수 없다는 것입니다, 그래서 800 기가는 부 풀릴뿐입니다 그리고 그걸 정리하면 많은 공간을 절약 할 수 있습니다 관련 데이터 만 메모리에 저장해야합니다 쿼리가 최적화되지 않았을 수 있습니다 그리고 순차적 스캔을 많이하고 있습니다

Postgres가 데이터를 스캔하는 방법, 일반적으로 순차 스캔 또는 인덱스 스캔 데이터베이스에 인덱스가있는 경우 인덱스를 사용하여 행을 검색합니다 검색어에 대한 관련 행만 이벤트를 저장하는 테이블이 있다고 가정 해 보겠습니다 타임 스탬프에 인덱스를 만들면 마지막 날에 대한 쿼리를 실행하면 Postgres는 해당 색인을 사용합니다 마지막 날의 결과 만 반환하는 것 나머지 데이터는 스캔하지 않습니다 색인을 적절하게 작성하지 않은 경우, 어쩌면 당신은 단지 스캔하고 있습니다 항상 전체 데이터베이스 훨씬 더 정확한 쿼리가 필요합니다

대부분의 프레임 워크는 기본 키를 생성합니다 기본 색인 만 하지만 더 복잡한 쿼리를 수행하는 경우 스스로 색인을 작성해야 할 수도 있습니다 그 문제의 다른 측면은 어쩌면 사용하지 않은 색인이 많이있을 수도 있습니다 그래서 당신은 Postgres가 필요로하는 많은 인덱스를 가지고 있습니다 행을 삽입 할 때마다 포스트그레스는 그 행을 삽입해야합니다

테이블에있는 모든 색인에 네가 많은 걸 가지고 있고 그들이 사용되지 않는다면 전체 데이터 양을 늘릴 수 있습니다 당신은 당신의 데이터베이스에 있습니다 그런 다음 올바른 쿼리에 사용할 수 없게됩니다 다시 말하지만 단일 노드 Postgres를 최대한으로 최적화하려고 시도하십시오 그 이후에 대해 생각하고 싶다면 Citus를 사용하여 샤딩 또는 스케일 아웃 그게 말이되는 때입니다

성능 문제가 발생하는대로 제안하지 않겠습니다 더 많은 하드웨어를 구입하십시오 그리고 그 문제를 해결하려고 노력합니다 네가 할 수있는 일이있다 그러나 한 지점이 지나면 어려워진다

Postgres를 조정하고 볼 수 있습니다 Citus와 같은 다른 기술로 확장 할 수 있습니다 나는 3 개 또는 4 개의 테이블을 파헤 칠 것이다 실제로 도움이 될 것입니다 이 문제들 중 어느 것이 우리 데이터베이스에서 계속되고 있는지

우리는 표준 하나부터 시작할 것입니다 전체 데이터베이스를 포함 이것은 pg_stat_database라고 불린다 다시 한 번 특정 행을 선택했습니다 이 데이터베이스에 대해 그것은 꽤 많은 정보를 제공합니다

백엔드 수, 데이터베이스 이름, 데이터베이스 ID 여기에서 더 중요한 분야 트랜잭션 커밋, xact 커밋 및 xact 롤백 그래서 그것은 얼마나 많은 트랜잭션을 알려줍니다 커밋 된 및 데이터베이스에서 롤백 된, 얼마나 많은 블록이 읽혔는지 알려줍니다 얼마나 많은 블록이 맞았는지 비교합니다 우리는 그 정보를 보았습니다 또한 얼마나 많은 튜플이 있는지 알려줍니다

귀하의 데이터베이스에 삽입, 업데이트, 삭제되었습니다 당신이 많이있을 수도 있습니다 너는 묻는 사람들에 대해 들었을 것이다 너는 좋아, 너의 질문은 너의 데이터베이스 야 삽입 무거운 데이터베이스? 많은 업데이트가 있습니까? 당신은 많은 삭제를합니까? 이러한 질문에 대한 답을 찾으려면, 당신은 여기 올 수 있고 실제로 통계를 얻을 수 있습니다

무엇에, 기본적으로 그 질문들에 대한 답은 무엇입니까? 유스 케이스는 무엇입니까? 일반적으로이 테이블을 사용합니다 for는 가져온 행 수를 찾습니다 데이터베이스에 대한 쿼리에 의해 반환됩니다 자,이 두 용어는 서로 다릅니다 Postgres는 사실이 컬럼들을 약간 재미있게 이름 지었다

하지만 반환 된 튜플을 보면 실제로 얼마나 많은 튜플이 리턴되었는지입니다 그리고 나서 가져온 것은 실제로 얼마나 많은가? 쿼리를 렌더링하는 데 필요한 그래서, 아마도 많은 쿼리를 반환했을 것입니다 하지만 당신은 좋은 지표가 없었어요 불필요하게 많은 행을 반환했습니다 이 비율은,이 특별한 경우를 보면, 당신은 볼 수 있습니다, 나는 0의 숫자가 무엇인지 모르겠다

3 억 6,700 만 명이 튜플을 가져 왔다고 생각합니다 675가 반환되었습니다 그래서 튜플의 반은 실제로 반환되었습니다 그것들은 반환 될 필요가 없었다 그래서 당신은 예를 들어 그것에 인덱스를 넣어서

또 다른 예는 데이터베이스의 삽입, 갱신, h 제 비율 벤치 마크를 할 때, 특정 병목 지점을 찾으려고 할 때, 당신은 알아 내고 싶어합니다 좋아, 내가 삭제 작업량을 조정해야합니까? 삽입 파이프 라인을 조정해야합니까? 업데이트를 조정해야합니까? 이 비율을 찾는 것이 도움이됩니다 그리고 분명히 처리량을 얻을 수 있습니다 어떤 처리량을 찾고 있습니까? 어떤 보장을 하시겠습니까? 귀하의 응용 프로그램 사용자에게? 그리고, 당신을 제공 할 수있는 데이터베이스는 무엇입니까? 그래서, xact 커밋을 보면 너는 알아낼 수있을거야

얼마나 많은 커밋, 얼마나 많은 트랜잭션 이 통계를 재설정 할 수 있습니다 그래서 더 정확한 숫자를 원한다면 특정 날이나 무언가를 위해 이 통계를 재설정 할 수 있습니다 그런 다음 다시 가져 오십시오 이것은 전체 데이터베이스를위한 것이 었습니다 지금 일반적으로 이것은 당신에게 좋은 아이디어를 준다

찾을 곳 그러나 그것은 충분하지 않습니다 내가 너에게 말하면, 알았어 거래가 많다 귀하의 데이터베이스에서 계속, 그건별로 말하지 않습니다 거기에 일부 문제는 처리량, 너 알아 내고 싶어, 알았어

내 작업 부하 중 어느 부분이 원인입니까? 다른 테이블 세트가 있습니다 테이블 정보를 제공합니다 이것은 pg_stat_user_tables라고 불립니다 열이 많아서 읽을 시간이 조금 부족합니다 그러나 더 중요한 것들은 여기에있다

얼마나 많은 시간을 알려주지? 순차적 스캔을 시작했습니다 그 테이블에 몇 번 대 스캔을 시작하고 색인화합니다 그리고 얼마나 많은 튜플 각각을 읽어야 만했는지 그래서, 그것은 매우 유용한 정보입니다 색인이 필요한지 아닌지, 당신이 있다면, 나는 때때로 개발자들과 이야기를 나눴습니다

그들은 좋아, 실제로, 내 데이터베이스와 같다 순차적 스캔을해서는 안됩니다 우리는 한 번에 5 행 이상을 스캔하지 않습니다 그런 다음 우리는 데이터베이스에 간다 그리고 매우 다른 경우 데이터베이스의 그림

데이터베이스는 항상 순차적 스캔을 수행합니다 왜냐하면 당신이 5 열을 요구하고 있기 때문에, 데이터베이스에 알려주는 색인이 없을 수도 있습니다 5 개의 행을 스캔하면됩니다 당신에게 그 정보를 얻기 위해서 그것이 당신에게 말해주는 다른 것은 튜플의 수입니다

삽입, 업데이트, 삭제됨, 다시 비슷한 통계 테이블 기준 라이브 튜플의 수, 죽은 튜플의 수, 저것은 부 풀리는 곳과 자동 진공관이 오는 곳입니다 이것은 매우 깨끗한 데이터베이스였습니다 그래서 그것은 가지고 있지 않으며 죽은 튜플 하지만 아마도 그럴 일은 없을거야 이걸 데이터베이스에서 실행할 때

죽은 튜플의 수는 기본적으로 더 이상 사용할 수없는 튜플 그러나 Postgres는 그들을 정리하려고하지 않았습니다 그렇게하면 부 풀릴 생각이 생기므로, 부 풀리는 Postgres를 검색하면 매우 복잡한 쿼리가 생성됩니다 기본적으로이 표와 같이 너에게 저 정보를 줄 광고 몇 다른 테이블 기가 바이트 또는 테라 바이트의 관점에서, Postgres 데이터베이스에 얼마나 부 풀었습니까? 테이블 등으로 무너지고, 정확한 질문을하고 싶지 않았습니다 너희들이 관심이 있다면 유용한 쿼리를 추가 할 수 있습니다 슬라이드 부록에 그래서 당신들은 복사, 붙이기, 실행 만 할 수 있습니다

귀하의 데이터베이스에 유용하고 있는지 확인하십시오 그리고, 그것은 또한 여러분에게 마지막 진공 상태를 보여줍니다 자동 진공, 마지막 분석, 자동 분석, 그래서 내가 말했듯이 Postgres에는 자동 진공 장치가있다 가끔씩 올라 오는 실제로 진공을 실행하고 데이터베이스를 분석합니다 진공 청소기는 팽창을 청소하는 것입니까? 분석 대상은 통계를 캡처하는 것입니다

쿼리에서 이러한 통계를 사용할 수 있습니다 그 정도면 충분하지 않다면 또는 당신이 괜찮은 느낌이 든다면, 내 자동 진공관처럼 충분히 조정해야합니다 그 모든 부 풀기를 제거하기 위해, 아마도 그렇지 않다 알다시피, 17 일, 좋아, 내가 씨앗 데이터베이스 어디서 같은, 1 년 동안 테이블에 자동 진공이 공급되지 않았습니다 데이터베이스 크기는 2TB이고, 진공 상태가되면 700 기가가됩니다

일반적으로 이것은 발생하지 않을 것이며, 이것은 또한 극단적 인 경우이다 하지만 기본적으로 Postgres autovacuumes 당신의 테이블이 20 % 바뀌었다 일반적으로 충분하지 않은 기본값입니다 대형 데이터베이스의 경우 데이터베이스에 10 억 개의 행이 있다고 가정 해 보겠습니다 너까지 기다리고있어

당신은 2 억 행의 부 풀림을합니다 실제로 그것을 치우기 위해 그것은 사실이 아닐 수도있다 대부분의 내가 이야기하는 Postgres 사용자는 큰 데이터를 가지고 있으며, 그래서 그들이 Citus를보고 있습니다 이러한 문제는 매우 자주 발생합니다 네가 가질 때, 아주 자주 와라

큰 데이터베이스가있을 때 Pg_stat_user_tables, 당신은 무엇을 할 수 있습니까? 대략의 라이브, 데드 튜플 수 당신에게 얼마나 부 풀리는지를 알려줍니다 표가 삽입, 갱신, 삭제 여부를 확인하십시오 실제로 우리에게는 본질적으로, 그들의 작업 부하의 60 % 이상이 업데이트되었습니다 그리고 나서 그것은 막 온 것입니다

앱의 한 문장에서 그들은 마치 "이 업데이트가 있다는 것을 알았 더라면 주요한 문제이다 " 그들은 작업량을 약 90 %까지 줄일 수있었습니다 앱 핵심 부분 만 수정하면됩니다 업데이트 횟수를 줄입니다 당신이 당신의 기대치를 당신의 데이터베이스에서 찾아낸다면

나는 좋아, 나는 많은 질문을하지 않을 것이다 때로는 활성 레코드가 당신을 위해 쿼리를하고있을 수도 있습니다 그리고 당신은 깨닫지 못할 수도 있습니다 코드를 특정 방식으로 작성한 것 데이터베이스에서 훨씬 더 많은 트래픽을 발생시킵니다 분명히 autovacuum, autoanalyze, 너의 테이블이 있는지 알아봐

충분히 진공 청소기로 채워지는지 여부 그리고 이것은 정말 유용하다고 생각합니다 순차 스캔 수와 인덱스 스캔 수입니다 트랜잭션 형 앱의 경우 순차 스캔 일반적으로 필요한 경우가 아니면 전체 데이터 세트에서 분석을 수행하고 있습니다 다수의 순차적 스캔을 볼 경우 깃발을 들어야합니다 인덱스에 대해서도 비슷한 통계가 있습니다

색인, 색인 스캔이 있습니다 해당 테이블에서 인덱스 스캔을 몇 번 시작 했습니까? 일반적으로 당신은 쓰기 문제가 많습니다 쓰기 처리량이 충족되지 않습니다 당신은 많은 색인을 가지고 있기 때문에, 테이블에 15 개의 인덱스가 있습니다 너가 가서 얼마나 많은 것을 보았을 때

이러한 인덱스 중 사용중인 당신은 그들 중 7 명이 심지어 사용되지 않는다는 것을 깨닫는다 귀하의 질문에 의해 인덱스는 항상 저장 공간간에 균형을 유지합니다 쓰기 처리량 및 읽기 처리량을 제공합니다 그리고 그것이 의미가있는 시점이 있습니다

실제로 비용을 들여 인덱스를 생성한다 드라이브 속도 저하 그러나 당신이 모든 것에 단지 색인을 가지고 있다면 실행할 수있는 쿼리 실제로 데이터베이스가 손상됩니다 도움이되는 것 이상 아마도 불필요한 부분이 많이 생기기 때문입니다 데이터베이스에 계속 씁니다 그것은 가장 유용한 것들입니다

다시 말해서, 튜플을 읽거나 튜플을 반입했다는 것을 알려줍니다 이것은 완벽한 지표였습니다 그래서 당신이 읽을 필요가있는 것을 독서하는 것 하지만 때로는 쿼리를 실행하는 경우 3, 4 개의 필터 당신은 그들 중 하나에 대해서만 색인을 가지고 있습니다 그럼 당신은 차이점을 발견 할 것입니다 이것들과 인덱스가있는 것을 보면 그냥 너무 많은 행을 읽고있다

그것이 필요한 많은 것보다, 더 구체적인 색인으로 만들 수 있습니다 그것을 복합 색인으로 만들어서 두 개의 열 또는 세 개의 열로 구성됩니다 그것들은 pg_stat_user_indexes입니다 자, 우리가 처음에 해결했던 문제로 되돌아 와서, 이는 캐시 적중률이 좋지 않음을 나타냅니다 실제로 정보를 사용할 수 있습니다

이 세 가지 모두에서 테이블과 더 많은 것들이 있습니다 하지만이 3, 4 가장 좋은 출발점이다 눈부신 모든 문제를 발견 한 곳 어떤 것이 있다면 왜 그랬는지 이해합니다 당신은 나쁜 타격 률을 보였습니다 그래서, 실제로, 나는 응용 패턴을 말해야합니다

하지만 당신은 데이터베이스 패턴을 본다 애플리케이션 측면과 일치하지 않는 그래서 많은 업데이트를하지 말아야한다고 생각합니다 하지만 그것은 당신의 데이터베이스 메인 워크로드를 밝혀냅니다 알았어, 나는이 테이블을 생각해 작아야한다, 나는 그것이 너무 크다는 것을 깨닫는다

이 테이블에 죽은 줄을 써서는 안됩니다 그래서 이것은 당신이 가정을 점검하는 데 도움이됩니다 더 깊이 들어가서 고칠 수 있습니다 부 풀리는 것이 많으면, 당신의 더 큰 테이블 인 테이블이 있습니다 그러나 그들은 매우 적은 진공 청소기로 청소됩니다

실제로 자동 진공관을 튜닝 할 수 있습니다 변경의 2 %에서 트리거합니다 당신은 내 테이블의 2 %가 바뀌면, 테이블에 진공을 일으킨다 이것은 매우 유용합니다 실제로 대형 테이블의 경우 약 2 %를 권장합니다

그래서 당신은 그것으로 시작할 수 있습니다 실제로 증가시킬 수도 있습니다 autovacuum이 사용하고있는 프로세스의 수 그것은 당신이 할 수있는 또 다른 일입니다 그래서 자동 진공이 충분히 빈번하게 시작됩니다

그러나 그것은 변화의 속도를 따라 잡을 수 없습니다 그런 다음 더 많은 코어를 제공해야 할 수도 있습니다 유지하려면 자동 진공 장치에 연결하십시오 어쩌면 순차적 스캔을 많이하고있는 것일 수 있습니다 그게 문제라면 몇 가지 색인을 만들어야합니다

어쩌면 불필요한 색인이 많이있을 수도 있습니다 나는 3 가지를 함축하고 4 가지를 함축하려하지 않는다 모든 것이 있지만 일부는 있을지도 모른다 불필요한 항목을 삭제할 수 있습니다 좋은 성능을위한 색인

이 모든 것들은보다 일반적이며, 나는 특정 쿼리를 보지 않는다는 것을 의미한다 특정 검색어를 최적화하지 않고 그래서 이것은 일반적으로 시작하는 데 유용합니다 그런 다음 좋아하기 시작합니다 좋습니다, 이것들이 문제의 종류입니다 하지만, 당신이이 일을 너는 좋은 색인을 가지고있다

또는 캐시 적중률이 낮아서 성능이 저하 될 수 있습니다 특정 쿼리가 충분히 잘되고 있습니다 특정 검색어는 여전히 실적이 좋지 않습니다 특정 웹 페이지가 여전히 느립니다 어떻게 분리합니까, 느린 쿼리는 무엇입니까? 이것은 pg_stat_statement와 같습니다

그 질문에 대한 답입니다 그리고 그것은 실제로 내 동료 중 하나입니다, Claire는 FOSDEM에 있었고 가장 일반적인 조언이었습니다 기본적으로 pg_stat_statements를 사용합니다 그래서 pg_stat_statements는 무엇을 하는가? Postgres의 확장 기능입니다 이 실행 통계 서버가 실행 한 모든 SQL 문 중 하나

실제로 쿼리를 정규화하고 함께 그룹화합니다 그래서 각각의 모든 쿼리는 실행되지 않을 것입니다 이 형식의 모든 쿼리에 대해서는 저장됩니다 이것에 관한 통계입니다 모든 특정 통계를 살펴 보겠습니다

내보내고 사용자에게 내 보냅니다 놀랍게도보기를 사용하여 pg_stat_statements라고도 부릅니다 다시 쿼리 할 수 ​​있습니다 정기적 인 Postgres 테이블처럼 테이블에서 통계를 얻으십시오 그래서, 그 견해에는 무엇이 포함되어 있습니까? user_id, db_id, query_id 및 쿼리 텍스트가 있으며, 그리고 그것이 데이터베이스에서 실행 된 횟수

한 쿼리가 느린 경우 하지만 5 일에 1 번 실행됩니다 괜찮을거야하지만 쿼리가 있다면 5, 10, 15 밀리 초를 절약 할 수있는 것과 같습니다 하지만 그것은 하루에 수천 번 실행됩니다 실제로 최적화하는 것이 더 유용합니다

또한, 일종의, 같은 시간, 최소 시간은 얼마입니까? 이 유형의 쿼리를 실행하는 데 걸렸습니다 Max_time, mean, 그것은 또한 표준 편차를 제공합니다 당신이 이해할 수 있도록, 좋아, 아마도 한 두 가지의 나쁜 사건 하지만 항상 나쁜,이 쿼리를 수행 무엇입니까? 그리고 그것이 실행 된 횟수를 알려줍니다 두 조각을 서로 연관 지을 수 있습니다 또한 IO에 대한 정보를 알려줍니다

공유 된 블록의 수 쓰다, 쓰다, 더러워 졌어? 얼마나 많은 지역 블록이 쳤고, 쓰여지고, 더러워 졌습니까? 또한 블록 읽기 및 쓰기에 소요 된 총 시간 몇 가지 예를 들어 보겠습니다 당신이이 정보로 무엇을 할 수 있는지 가장 일반적인 쿼리 중 일부입니다 데이터베이스를 즉시 실행합니다

시간이 많이 걸리는 상위 10 개 쿼리는 무엇입니까? 당신은 내가 total_time을 사용하고 있음을 알아 차리고, 나는 one_time을 사용하지 않으므로 이것이 당신에게 알려줍니다 데이터베이스에 대한 쿼리는 무엇입니까? 그 시간의 대부분을 보내고 있습니다 사실 total_time이기 때문에 본질적으로 mean_time에 전화를 곱한 결과입니다 그래서 그것은 단지 전화를 보는 것과 반대되는 좋은 측정입니다 이것이 가장 일반적인 쿼리라고 말합니다

하지만 밀리 초만에 실행하면 괜찮습니다 또는 쿼리 시간 만 사용하면됩니다 하지만 어쩌면 매우 일찍 실행될 수도 있습니다 이것은 일반적으로 좋은 방법입니다 때로는 예를 들어, 나쁜 캐시 적중률의 예에서, 너는 너가하고있는 걸 알지

많은 디스크가 당신이 알아 내고 싶은 것을 읽을 정도로 읽습니다 상위 10 개 검색어는 무엇입니까? 디스크 읽기에 대부분의 시간을 소비 모니터링 도구에서 알 수 있듯이, 알다시피 내 시간이 많이 갈거야 디스크 읽기에서는 쿼리 만 찾습니다 당신은 그 쿼리 만합니다 아니면, 그냥 가고 싶다

가장 많이 사용되는 상위 10 개 검색어는 무엇입니까? 당신이 일종의 일을 할 때 유용합니다 벤치마킹 등의 당신은 벤치 마크하고 싶지 않아 좋아, 최악의 쿼리를 벤치마킹하고 싶다 하지만 가장 일반적인 쿼리를 벤치마킹하려고합니다 이 모든 정보를 가져올 수 있습니다

너의 시선을 정확하게 말하다 정확히 무엇을 튜닝해야할까요? 일반적으로 최적화를 수행하는 것이 아닙니다 좋은 모범 사례를 기본으로 수행 한 후에 이것은 내가 강력하게 추천하는 질문이다 데이터베이스에서 실행되어 어느 것을 찾아야하는지 너는보고 있어야한다 이 블로그 게시물 중 하나입니다

pg_stat_statements에 표시되므로 가장 중요한 것은 무엇입니까? 그것은 당신에게 통화, total_time, mean_time, max_time 및 표준 편차 시간 그것은 또한 당신의 질문을 좋아합니다 화면에서보기 좋게 보이도록 당신은 쉽게 그것을보고 디버깅 할 수 있습니다 그것은 현재 사용자의 쿼리만을 보여줍니다 그것은한다

현재 사용자가 아니라, 백업 사용자가 아닌 모든 것 그래서 때로는 백업 일이 나타날 것입니다 그리고 나서 상위 15 개 검색어를 찾습니다 평균 시간으로 정렬 이것은 일반적으로 실행할 좋은 쿼리입니다

그리고 좋은 출발점 그것은 당신에게 많은 것을 보여줍니다 이 예제를 보면 그것은 말한다, 좋아, 데이터베이스가 실행 된 total_time 이 쿼리에 소요 된 시간은 약 121 초입니다 mean_time은 실제로 86one입니다 max_time은 3 초, 3

7 초입니다 이것은 표준 편차이며, 이 많은 행이 이것으로부터 리턴됩니다 자, 가서 데이터베이스에서 실행하십시오 흥미로운 것들을 찾을거야 그것에서 나오는

자, 당신이 알아 냈다고 가정 해 봅시다 느린 쿼리는 무엇입니까? 자, 당신은 그들을 조정하기 위해 무엇을합니까? 그건, 여러 번 이야기 할 수 있다고 생각합니다 여러 워크샵을 자체적으로 진행합니다 그러나 그것의 아주 기본 EXPLAIN ANALYZE를 수행하여 시작하는 것입니다 그래서, 당신이 쿼리를 데리러, EXPLAIN ANALYZE를 수행합니다

알고있는 것이 유용하고 이것은 공통점입니다 사람들은 일반적으로 EXPLAIN을 수행합니다 EXPLAIN은 Postgres가 생각하는 것만을 제공합니다 그것의 세계관의 그러나 실제적으로 일어날지도 모른 무엇이 아닙니다 쿼리를 실행할 때 EXPLAIN을 보면 그리고 당신은 그것이 당신에게 말하는 비용을 보았습니다 이것이 더 복잡한 계획이라면 당신은 더 많은 비용을 볼 수 있습니다

그리고 그 Postgres 견적 이거 오래 걸릴거야 실제로는 전혀 사실이 아닐 수도 있습니다 보길 원하는 것 EXPLAIN ANALYZE를보고있을 때 실제 시간입니다 오른쪽에는 실제 시간이 표시됩니다 다음과 같은 경우를 보여줍니다

행이 출력되었고, 출력 된 행 수 이것은 매우 간단한 쿼리입니다 모든 행을 선택하는 것입니다 여기서 특정 열 값은 1입니다 그것은 당신에게 보여줍니다, 그것은 약 9,584 행을 반환 할 것으로 예상됩니다, 실제로 약 10,000 행을 반환합니다

따라서 꽤 가깝습니다 예상치는 꽤 가깝습니다 그런 다음 쿼리 계획을 읽습니다 그런 다음 계획의 어느 부분을 파악하는지 가장 많은 시간을 들이고 있습니다 실제 시간에는 추정치가 아니라 그런 다음 색인 생성을 통해 조정할 수 있습니다

또는 다른 Postgres 튜닝 매개 변수를 조정하여 자, 그건 단지 표준적인 부분입니다 아시다시피, 당신이 분석을 할 때, 쿼리에서 가장 느린 부분 조정 하지만 Postgres는 실제로 당신에게 알려줍니다 EXPLAIN의 몇 가지 흥미로운 점도 있습니다 이 쿼리를 살펴 보겠습니다

그래서, 나는 테이블에서 선택하고있다 여기서 열 1은 1이고 열 2는 0입니다 당신이 이것을 보게된다면, 당신은 알 것입니다 쿼리 계획을 조정할 수 있지만 실제로 거기에는 불일치가있다 중요한 불일치는 100 배 이상입니다

Postgres가이 쿼리가 반환 할 것이라고 생각하는 측면에서, 그래서 Postgres는 100 행을 반환 할 것으로 추정합니다 실제로 데이터베이스는 10,000 개의 행을 반환합니다 그리고 그것은 정말로 벗어났다 그래서, 만약 당신이이 계획보다 위의 것을 가졌다면, 그래서 집계를한다면, 조인을하고 있다면, Postgres가 실제로 선택할 계획 좋지 않을거야 그것은 단지 100 개의 행만 믿기 때문입니다

스캔에서 올거야 하지만 실제로는 1 만 행이 올 것입니다 스캔에서 실제로주의해야 할 것이 있습니다 Postgres 튜닝에 대한 많은 조언이 있다고 생각합니다

한 번 당신이 EXPLAIN ANALYZE를 본 것처럼 그것에 대해가는 방법 그러나 그 다음 거기에있다 고려해야 할 중요한 것 느린 쿼리가 항상 그런 것은 아닙니다 인덱스를 추가하고 작업 속도를 높일 수 있습니다 때때로 Postgres에 잘못된 통계가있을 수 있습니다 또는 충분한 데이터를 보지 못했습니다 데이터에 대한 올바른 통계를 얻을 수 있습니다

이것을 보면, 문제는 이것 이후에 일어나는 일, 나쁜 실행 계획처럼 매우 나쁠 수도 있습니다 그리고 그건 당신이 창조하지 않았기 때문이 아닙니다 올바른 색인 또는 다른 것, 그것은 단지 Postgres 무언가가 올거라 생각했다 이 특정 스캔에서 행 수가 훨씬 더 많았습니다 나쁜 통계가 표시되는 첫 번째 단계 높은 것으로 다시 분석하는 것입니다

기본 통계 대상 실제로 행 수 Postgres 데이터 분포를 추정하는 데 사용됩니다 그래서, 알겠습니다 Postgres가 더 많은 행을 스캔하기 때문에 더 비쌉니다 그 통계를 얻으려고하지만 통계를 만든다

훨씬 더 정확합니다 그게 처음 시작하는거야 그러나 여기의 문제는 사실 그 것이 아닙니다 당신이 어떻게 할 수 있는지에 대한 예를 한 가지만 골라 둡니다 통계가 일치하지 않으면 Postgres에게 실제로 어떻게 말할 수 있습니까? 통계 수정 Postgres가 어떻게 통계를 향상시킬 수 있는지에 대해 설명합니다

여기에 문제가있는 이유는 이 특별한 스키마에있다 제 1 열 및 제 2 열은 서로 상관된다 실제로 두 번째 열, 두 번째 열의 값, 내가 아는 데이터를 채웠다 실제로 열 1을 10으로 나눈 값입니다 그래서, 당신이 칼럼 1을 안다면, 실제로 가치를 결정하는 데 충분합니다

열 2의하지만 포스트그레스는 그것에 대해 아무것도 몰라요 기본적으로 Postgres는 통계 만 캡처합니다 독립적으로 단일 열에 대해 그래서 그것은 말합니다, 아마도 1 만 줄이 될 것입니다 1 열에서 반환, 2 열에서 10,000 이제 두 필터가 함께 적용됩니다

그러면 아마 100 줄을 얻을 수있을 것입니다 따라서 선택도를 사용하여 예상치를 발행합니다 이 숫자를 생각해 내야합니다 하지만 실제로 이것은 생산하지 않을 것입니다 인덱스에 관계없이 올바른 결과 Postgres에 말하지 않으면 아무 것도 추가하지 않습니다

이 둘 사이의 상관 관계에 대해서 그래서 Postgres는 멀티 컬럼 통계를 선언 할 수있게 해주 며, 그것은 기본적으로 그것을하지 않습니다 그것이 그것을 할 것이기 때문에 모든 열 (row)의 순열 (permutations)과 조합 (combination) 당신의 테이블에있는 모든 칼럼들, ANALYZE는 너무 오래 걸릴 것입니다 하지만 Postgres에 두 개의 열이 서로 연관되어 있음을 알 수 있습니다 그것에 대한 통계를 작성합니다

그래서 그것은 구문입니다 우리는 그것에 들어갈 필요가 없지만, 궤도 의존 통계 제 1 열, 제 2 열 일단 그 정보가 있으면 당신은 이것이 정확히 같은 쿼리라는 것을 알 수 있습니다 나는 테이블을 분석 한 후 다시 실행했다 그리고 Postgres에게 캡처하도록 알려줍니다 볼 수있는 상관 관계 통계 순차 스캔이 있습니다

현재 9,584 개의 행을 예측합니다 100 대신에 그리고 훨씬 더 정확합니다 이것 이후에 일어날 일들은 훨씬 더 효율적입니다 실제로,이 통계가 아주 보이는 것처럼 보입니다 사람들이 그렇게 생각하지 않아요

실제로 큰 영향을 미칩니다 이것은 사실 7 월에 작년에 내가 트위터에 올린 것입니다 우리는 고객을 보았습니다 수천 배 빠른 성능 그리고 나는 그것이 같아 보인다는 것을 안다, 이 SQL 쿼리를 실행해야했습니다 1000 배 더 나은 성능을 얻으려면 그러나 그것은 일어난다

잘못된 쿼리 계획 견적 이것은 간단한 쿼리입니다 더 복잡한 쿼리 인 경우 너는 많은 이슈가있을거야 Postgres가 생각하기에 행 수는 다릅니다 그것이 실제로있는 것에서 따라서 이것을 요약하기 위해 pg_stat_statements 최적화 할 수있는 적절한 쿼리 집합을 찾고, EXPLAIN ANALYZE를 사용하고 가장 느린 부분을 튜닝하고, 다시 ANALYZE에 중점을두고, EXPLAIN을보고 가정하지 마라

Postgres가 할거야, 우리는 EXPLAIN이 매우 다른 것을 보았습니다 어떤 경우에는 실제로 일어나는 일로부터 차이점을 눈여겨 보아라 견적 및 실제 수정 방법을 찾고, Postgres에게 통계를 수정하도록 알려주십시오 항상 정확하지 않을 수 있기 때문입니다 그래서, 그것은 기본적으로 내 이야기의 주요 내용입니다

빠른 견적에 보너스를 추가했습니다 그래서 이것은 반드시 필요한 것은 아닙니다 나머지 이야기와 관련있다 성능 조정 및 기타 측면에서 하지만 Postgres 캡처를 사용하면 실제로 많은 좋은 견적을 얻을 수 있습니다 어떤 것들에 대해서, 지금 당장 매우 비싼 쿼리를 실행하고있을 수 있습니다

그걸 알아 내려고 그것은 pg_stats에 캡처됩니다 각 열에 대한 정보를 수집합니다 Postgres는 그것에 대해 생각합니다 이것을 보면 널 (Null) 부분을 알 수 있습니다

처음부터, 그것은 당신에게 명백한 가치의 수를 알려주고, 여기에는 고정 된 수의 고유 한 값이 있습니다 그래서 천을 말한다 때로는 비율을 알려주므로 말할 수 있습니다 오케이, 20 %의 테이블 분명한 가치의 숫자가 될 것입니다 때때로 이해하는 것이 유용합니다

가장 흥미로운 것들 나는 해키 스크립트를 써서, 가장 일반적인 값이며 가장 일반적인 빈도입니다 에 대한 견적을 위해, 좋아, 우리 10 대 고객, 당신은 실제로 그들로부터 좋은 견적을 찾을 것입니다 가장 일반적인 가치관에서 그렇게 말할 것입니다 알았어, 가장 일반적인 값은 다음과 같다 이 고객에 대해 가지고있는 행 수 대부분의 일반적인 주파수에서 말하자면 말입니다

그래서, 이것이 실제로 무엇을 말하는지, 가치 945에 대한 것입니다0017 데이터베이스의 행 수로, 특정 ID가 갖는 행 수입니다 그래서 당신은 그것을 위해 사용할 수 있습니다 근본적으로 근사하고, 당신이 알아 내고 싶다고 말하는 것처럼, 당신의 테이블이 있다고 가정 해 봅시다

네트워크 바이트와 당신이 알아 내고 싶어 어느 장치가 실제로 많은 양의 바이트를주고 있는지를 나타냅니다 가장 많은 양의 바이트를 방출하는 장치, 당신은 복잡한, 그것이 복잡하지 않더라도, 확실히 비싼 계정 별개의 쿼리입니다 그것을 알아 내기 위해, 나는 여기에 갈 것이다 Postgres에 상위 10 개 기기에 대한 통계가 있는지 확인하십시오 그리고 그걸 사용해서 알아낼 수 있습니다

알았어, 얼마나 많은 패킷이 방금 시스템을 통과했는지, 우물 Postgres는 그것을위한 견적을 가지고 있습니다 거친 공 공원을 줄 수 있어요 이것들은 당신이 할 수있는 것들입니다 2 천 1 백만 건, 345 천건 중 한 건의 결과, 너는 그들에게 실제로 말할 필요가 없다 정확한 숫자는 얼마입니까? 당신은 이것에 대해 많이 말할 수 있습니다

다른 유용한 통계는 얻을 수 있습니다 그 히스토그램 범위도 마찬가지입니다 특정 가정이 있다면 데이터가 어떻게 퍼져 나가야하는지 당신은 분명히 그것을 확인할 수 있습니다 내가 이것을 사용하는 근사값은 다음과 같습니다 특정 열의 널 비율은 얼마입니까? 대략적인 숫자는 무엇입니까? 한 값에 대해 고유 한 값이 있습니까? 당신은 카운트를 구별 할 필요가 없다는 것을 알았습니다

반드시 그것을 알아내는 것 너는 여기를보고 얻을 수있다 그것이 무엇인지에 대한 대략적인 아이디어 그리고 가장 일반적인 가치는 무엇입니까? 란을 위해 그 행을 가진 대략적인 수 근사치 이것은 내가 일반적으로하는 또 다른 것입니다

당신이 매우 큰 데이터베이스를 가지고있는 것처럼, Postgres는 카운트 스캔을 캐시하지 않습니다 그래서 사람들은 카운트 스타가 매우 기대하고 있습니다 저렴한 쿼리, 그것은 Postgres에 없습니다 실제로 전체 테이블을 스캔해야합니다 각 행을 계산합니다

그래서 나는 10 억 줄의 테이블을 가지고있을 때 그걸 좋아하지 않습니다 그래서 나는 이것에 가서 거친 공 공원을 얻는다 이 테이블은 얼마나 큰가요? 이 테이블에서 어떤 작업을 할 수 있습니까? 내가 알면, 너는 갈 수있어 pg_class라는 테이블이 있습니다 당신은 거기에 가서 진짜 튜플을 찾을 수 있습니다

Postgres의 추정치 얼마나 많은 튜플이 있는지 요약하면, Postgres는 꽤 많은 통계를 보여줍니다 이 강의에서 우리는 주로 다루었습니다 성능과 관련된 것들 어떤 종류의 장소를합니까? 성능 문제를 조사하고 싶습니다

마찬가지로 포인터는 무엇입니까? 그것은 당신을 깊게 파고들 것을 가르쳐줍니다 Pg_stat 테이블 일반적으로 어떤 색인을 찾을 수 있도록 도와줍니다 인덱스, 테이블에 대한 통계 IO 통계, 진공 통계 Pg_stat_statements는 느린 쿼리를 찾는 데 도움이되며, EXPLAIN ANALYZE를 사용하거나 사실 더 좋을 것입니다 EXPLAIN ANALYZE 버퍼가 어떤 종류의 IO인지 확인하십시오

그래서 그것은 얼마나 많은, 이 검색어와 마찬가지로 조회수 비율은 얼마입니까? 그 중 얼마나 많은 것들이 디스크를 통해 가져와야하는지, 그리고 마지막으로 pg_stats, pg_class를 사용할 수 있습니다 좋은 근사를 얻으려고 Postgres가 귀하의 데이터에 대해 어떻게 이해하는지 이해하십시오 나는 말할 마지막 한가지가있다 그래서 당신이 그 소식을 듣지 않았다면, Citus 데이터는 Microsoft에서 인수했습니다 그래서 우리는 실제로 작업하고 있습니다

Azure에서 Citus를 시작했습니다 관심있는 사람이 있으면 시터스를 보면서 Azure에서 사용할 수 있습니다 당신은이 링크에 가서 흥미를 표현할 수 있습니다 우리는 당신을 그 고리에 계속 묶을 것입니다 그리고 그게 내 이야기 ​​야

나는 2 초 남았고 그래서 제 시간에 맞았습니다 (군중 박수)

김래원, 시나리오를 보고 멜로 라고 생각한 이유는? (영화 롱리브더킹)

난, 바보인가봐 ㅎㅎㅎ 찍으면서도 사실 애정신이 많다거나 그러진 않았거든요

한번만? 아니! 두번 세번 네번 여러번 진짜 처럼 보여야 하는 것이 가장 관건이었어요 조광춘이 그려져 있는 모습을 보면 웹툰과 거의 싱크로율이 없다고 생각

네, 저두 나중에 한번 멜로하고 싶습니다

누가 걸복동이랬나? 걸캅스 예상 시나리오보다 잘 만든 영화 / 손익분기점 넘겨 걸캅스2 가즈아! / 걸캅스 리뷰, 걸캅스 후기

안녕하세요 대충하는 영화리뷰, 저는 서삐삐입니다

5월 9일에 개봉한 영화 걸캅스를 대충 리뷰해보록 하겠습니다 이 영상은 스포일러 없는 영상이며 저의 개인적이고 주관적인 리뷰라는 점을 참고 바랍니다 저는 개인적으로 한국영화를 좋아하는 편은 아니에요 이유는 일단 한국영화가 공장에서 찍어낸 듯한 비슷비슷한 내용들을 별로 선호하지 않고 영화 'VIP'처럼 여성을 소모품으로 생각하는 그런 영화나 영화 '언니'와 같이 남성의 시각으로 그려지는 영화나 매번 똑같은 배우들이 나와서 비슷비슷한 이야기 마약 조폭 이런 영화들 이제는 질리더라구요 한국영화가 새로운 이야기를 가지거나 조금 다른 식으로 이야기를 풀어가는 영화에 관심이 가요

그래서 개인적으로 걸캅스 같은 영화가 나오는 것만으로도 새로운 데? 하는 생각을 했습니다 근데 개봉전부터 논란이 많더라구요 그래서 궁금했어요 도대체 영화가 어떡길래 그런가 싶어서 직접 보고 왔습니다 영화 자체로는 스토리가 짜임새가 있다거나 연출이 뛰어나거나 하지 않아요

b급 감성의 코미디 영화다 보니 1차원적인 개그들도 있고 개연성도 부족하고 허술하고 완성 도도 떨어지는 부분들도 많았어요 아쉬운 부분이 확실히 있습니다

그러나 제가 걸캅스를 딱 보고 느낀 점은 우리가 많이 본 전형적인 한국 코미디 영화에요 영화사에서 명절 노리고 만든 코미디 영화같은 느낌? 이미 이런 비슷한 완성도에 남성 캐릭터가 주인공인 이런 스토리의 영화들을 많이 봐왔잖아요 한국영화나 헐리우드 영화에서도 뻔하게 나오는 b급 감성의 코미디 영화에요 잘 안맞을 것 같은 두 사람이 힘을 합쳐 사건을 해결하고 범인을 잡는 뻔한 버디캅 무비였습니다 그런데 이게 그냥 성별만 반전시 켰는데도 신선하고 재밌더라구요

라미란 배우님이 범인을 때려눕 힐때 너무나도 통쾌하더라구요 수영 배우님의 찰진 욕 마치 주변에 있을 법한 친구인데, 능력자에요 능청스럽고 매력있어요 이성경 배우님의 진정성있는 대사 와 눈빛, 좋았어요

아! 그리고 연기 부분은 나름 괜찮 았어요 라미란 배우님, 수영 배우님, 특히 엄혜란 배우님의 연기가 좋아서 연기가 부족한 배우들이 그렇게 거슬리진 않았어요 조금 잉 스러운 연기도 조금 있었지만 말이에요 요즘 대두되고 있는 사건과 겹쳐서 우연이냐 소름이다고 하는데 제가 생각하기에는 이 이야기는 여성들에게는 생활이였고 매일 겪는 일들을 담은 현실 반영이 된 영화에요 예전부터 몰카 때문에 공중화장실 은 무서워서 못쓰고 리벤지 포르노, 데이트 약물, 강간 약물 이런 건 제가 20대 때 부터 들어봤던 이야기고 경찰들의 무관심한 그런 태도들 많은 공감이 되었어요 이제 와서가 아니라 여성들은 매일 두려움에 떨고 무서워하는 일상의 이야기를 담은 영화여서 라미란 배우님과 이성경 배우님의 대사 하나하나가 공감이 되더라구요 감독님이 대사 하나하나, 장면 하나 하나 고심하면서 쓴 것 같다는 생각이 들었어요

감독님의 여러 생각이 담긴 영화라는 게 느껴졌습니다 영화를 보기전에는 리벤지 포르노나 몰카에 대한 사회적 이슈를 담은 다른 영화들처럼 흘러갈 것 같아서 조금 걱정을 했는데 불편하지 않게 거슬리는 점 없이 볼 수 있어서 좋았습니다

여성이 결혼을 하고 경력단절에 대한 이야기도 다룬 것을 보았을 때 아 이 영화는 그냥 흉내만 내는 그런 영화가 아니구나 하는 생각이 들었습니다 대사가 좀 작위적이고 b급 유머나 1차원적인 유머가 안 맞는 사람도 있겠고 스토리의 완성도가 부족하고 허술한 점은 있지만 이런 짜임새를 가진 영화 많았잖아요 이거 보다 못한 영화들도 많은데 짜임새로 까기에는 조금 그렇구요 신기하게도 원래 많이 보았던 그런 류의 영화에 그냥 성별이 바뀐 것 하나만으로 영화가 이렇게 신선하고 유쾌하고 시원하고 통쾌할 수 있는지를 느낀 영화였습니다 저는 이 영화가 말하고자 하는 바도 좋았고 이러한 영화가 만들어 진 것도 좋았습니다

기존 영화의 장르성에 벗어나는 작품이 아닌 그냥 캐릭터가 단지 여성이고 여성의 시선으로 풀어낸 그런 영화에요 특별하게 여성만을 위한 영화가 아니라 사회적인 문제, 사회적인 이야기를 담은 영화입니다 영화 걸캅스 별점은 5점 만점에 3점입니다 우리나라에도 이 영화를 계기로 이렇게 여성 캐릭터들이 소모적이지 않고 영화 속의 여성 캐릭터가 1회성이 아닌 여성 캐릭터의 서사도 충분히 매력있는 그런 영화들을 보고 싶어요 더 나아가 여성 캐릭터 중심의 영화가 많이 만들어 졌으면 하는 제 개인적인 바람도 있습니다 네, 영화 걸캅스의 대충하는 리뷰 는 여기까지 구요 다른 영화 리뷰로 또 만나요~ 안녕~