<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>-타울- 아는만큼 보인다.</title>
    <link>https://tawool.tistory.com/</link>
    <description>타울이란? 
순 한글로 무엇인가 이룰려고 아둥바둥거린다라는 뜻입니다 ㅋ</description>
    <language>ko</language>
    <pubDate>Thu, 25 Jun 2026 23:06:18 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>타울</managingEditor>
    <image>
      <title>-타울- 아는만큼 보인다.</title>
      <url>https://t1.daumcdn.net/cfile/tistory/2558283B58DB4FE911</url>
      <link>https://tawool.tistory.com</link>
    </image>
    <item>
      <title>flex 를 추억하며</title>
      <link>https://tawool.tistory.com/312</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;오랜만에 Flex 카테고리에 글을 남기는 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;참 기억이 많이 나고, 추억도 많은 녀석이다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;처음 Flex 의 데모 사이트에서 유기적으로 움직이던 컴포넌트를 보고 받은 충격은 아직도 잊지 못한다&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;서버의 데이터를 실시간으로 화면에 보여주는 기술과, 마음대로 만들고 표현할 수 있는 그리드의 렌더러,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;완벽하게 구현된 리치인터넷 환경...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;동일한 코드를 데스크탑에서 실행 가능토록 Adobe Air... 그야말로 만능이었다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;(하지만 스마트폰에서는......)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이것이 한때 미래의 웹 기술이 될 거라는 확신이 있었고, 삽질도 정말 많이 했다. (몇 일 밤낮으로 고생을 했는지..)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;개인적으로는 정말 애정이 많았고, 미련이 남은 기술이지만&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러가지 이유로 Flex 가 점차 사라지면서..나의 개발자로서 열정도 사라졌다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;심심해서 당시 데모사이트나, 이것저것 찾아봤는데.. 현재는 정말 볼 수 있는곳이 없어서 아쉽다 ..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Flex / AIR / AS</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/312</guid>
      <comments>https://tawool.tistory.com/312#entry312comment</comments>
      <pubDate>Wed, 17 Dec 2025 11:18:51 +0900</pubDate>
    </item>
    <item>
      <title>AI 와 오랜만의 개발</title>
      <link>https://tawool.tistory.com/310</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;자바 개발을 개빡쌔게 짧고 굵게 si 으로 4년정도 했었다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그때는 모두 메뉴얼 또는 구글신과 네이버 형에게 도움을 받는게 최선이었고, 안풀리는 문제가 발생하면 수백건이 검색 된 검색 결과를 모두 참고하며 해결했다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그리고 개발을 하지 않은지 언 15년이 훌쩍 지났고..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;어느날 자바도 아니고, C# 으로 사내시스템을 만들어야하는 상황이 발생했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;db모닝점검을 자동화하는 것을 구상했는데,&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단, 대상서버 등록, 점검항목(쿼리만), 대상서버와 점검항목 연결, 결과보기&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이렇게 기능을 정의하고, 개발을 시작하려는데, 너무나 막막했다.. ㅋㅋ 자바도 아니고 c# 이고, 개발을 하지 않은지 15년이 지났으니, 당연했다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;다른 활용하는 방식이 많던데.. 내부 시스템은 인터넷이 안되고, 아직 회사에서 이런걸 지원하지 않는 상황이니..&amp;nbsp; git 이나 IDE 등에 연동은 하지 못하고, 인터넷이 가능한 PC 에서 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;ChatGPT&lt;span&gt; 에게 &lt;/span&gt;&lt;/span&gt;질문으로만 개발을 시작했다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그런데 이런 세상에 ㅋㅋㅋ 뭐 그냥 코드를 이해할 필요가 없다. (당연히 이해하면 좋다.)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;다 만들어준다 ㅋㅋ&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;그리고 한달도 안된 상황에서 C#, RAZOR 구성으로 뚝딱 만들어졌다 ㅋㅋㅋ&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;내침김에 , mssql 의 일자별 스케쥴러 실행 이력을 gantt 차트 형식으로 보여주고, 해당 bar 를 누르면 과거 소요시간 추이도 그래프로 보여주는 화면도 개발했다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;상태에 따라 필터링을 하는 것도 javascript 화면단으로 처리 했다.&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;gantt 차트도 좋은 라이브러리 없나 조금 구글신을 돌려보다가, 그냥 GPT 를 통해 만들어버렸다. 와아... ㅋㅋㅋ&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;15년전 개발할때는 이렇게 간단하게 할수 없었고, 시도조차 하기 어려운 일이었다.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;지금 해당 코드의 50% 이상을 이해하지 못한다 ㅋㅋ(솔직히 보지도 않았다.)&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만, 잘 돌아가고 있다!! 그럼 된거다 ㅎㅎ&lt;/p&gt;</description>
      <category>개인/일상</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/310</guid>
      <comments>https://tawool.tistory.com/310#entry310comment</comments>
      <pubDate>Mon, 29 Sep 2025 10:21:14 +0900</pubDate>
    </item>
    <item>
      <title>돼지 목에 진주 목걸이..</title>
      <link>https://tawool.tistory.com/309</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;지금 다니는 회사에 이직한지 2년정도 되었는데, 시스템 중에 업무관리를 redmine 을 사용하고 있어서 반가웠다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redmine 이 한물 가긴 했지만, 많은 곳에서 여전히 유용하게 사용된다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 얼마되지 않아 드는 생각은... 여기에 &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;누가&lt;/span&gt;&amp;nbsp;도입 하자고 했을까? 라는 궁금증이 생겼다&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여기 분위기를 봤을때 도저히 불가능한 일이기 때문이다. ㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단... Remine 을 제대로 활용을 거의 못한다...할 생각이 없다 ㅋㅋ (메일로 사용방법에 대한 팁을 공유해도 소용이 없다.)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나중에 알아보니 개발팀에서 도입한것도 아니다. (심지어 외부 업체를 통해 설치를.... ㅋㅋ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이왕 설치해줄거면 git도 연동해주지.여튼 소스 관리도 팀마다, 프로젝트마다 제각각이었지만 겨우 git 으로 통일 되는중이다. ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;일단.. 대부분 개발자가 사람들이 스크립트를 그냥 올린다.&amp;nbsp; wiki 문법으로 표시되어 알아볼수가 없지만 다들 별로 신경쓰지 않는다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;하지만 이런 문제는 애교수준이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;시작일자와 종료일자 관리가 안되서, 업무의 일정을 전혀 알 수가 없다. 종료 시키지 않는 일감도 수두룩 하고..&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;담당자를 바꿔가며 사용한다.(소요시간 기능을 사용한다면 괜찮겠지만.. 단 한명도 본적이 없다 ㅋㅋㅋ )&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;상황이 이래서 본인이 어떤 업무에 어떤 일을 했었는지. 그리고 얼마만큼의 시간을 소요 했는지 전혀 알 수 없다...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이런 상황인데. 꾸역꾸역 사용은 하고 있다 ㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;이 와중에 jira 를 도입했으면 좋겠다고 말하는 사람도 더러 나왔다. (redmine 도 제대로 못쓰는 마당에 jira 를??...)&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;갑자기, 업무관리를 한다며, 별도 프로그램을 만들고 있다 ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;그런데 이 프로그램 동작 방식이 신박하다 ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redmine의 일감 번호를 프로그램에 등록한다.&amp;nbsp; 그리고 시작일 종료일, 소요시간, 담당자를 다시 입력하도록 하는 프로그램이다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사람마다 redmine 사용법이 달라서 만든다는데.. (심지어 개발자가 5-6 명이 몇 개월째 만들고 있다 ㅋㅋ)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;너무나 신박하지 않나? ㅋㅋ redmine&amp;nbsp; 표준 사용법을 교육하는게 더 낫지 않을까?? ㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;redmine 을 잘 써보자고 방법과 함께 전체 메일도 보내봤지만, 그 어떤 리더도 움직이지 않는다 ㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;아무리 봐도 이건 리더들이 가장 큰 문제다 ㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;사내 위키사이트를 갑자기 만들고 오픈하더니 위키에 모든 것을 정리하라고 한다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;난 이미 redmine 위키에 이것 저것 정리를 엄청나게 했는데..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;.(redmine 위키도 나 혼자 썼다, 더군다나 여기에 정리하고 있으면 그걸 왜 정리하냐는 사람들이.... )&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;redmine 만 제대로 사용해도 될 일들을 만들어서 하고 있다 ㅋㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;더군다나 업무의 연장성을 본다면 redmine 만 사용하는것이 훨씬 좋은 선택일텐데...왜 이러는지 모르겠다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;최종 목표는 redmine 을 걷어 내는게 목적이라는 말도 들리던데.... 왜?&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;나의 이 회사 생활은 redmine 의 운명과 같이 할 것 같다 ㅋㅋ&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Redmine</category>
      <category>Redmine</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/309</guid>
      <comments>https://tawool.tistory.com/309#entry309comment</comments>
      <pubDate>Tue, 8 Jul 2025 13:37:25 +0900</pubDate>
    </item>
    <item>
      <title>PostgreSQL collation 설정(대소문자/악센트/전각반각 등, 정렬순서)</title>
      <link>https://tawool.tistory.com/307</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;추가내용,..&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;color: #ee2323;&quot;&gt;LIKE 검색이나, 문자열 함수 등을 사용이 불가능해집니다.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h2 data-ke-size=&quot;size26&quot;&gt;PostgreSQL 에서 Collation 관련 이슈..&lt;/h2&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;a href=&quot;https://www.postgresql.org/docs/current/collation.html&quot;&gt;https://www.postgresql.org/docs/current/collation.html : PG 메뉴얼&lt;/a&gt;&lt;/div&gt;
&lt;div&gt;&lt;a href=&quot;https://www.unicode.org/reports/tr10/&quot;&gt;https://www.unicode.org/reports/tr10/&amp;nbsp; : &lt;/a&gt;&lt;span style=&quot;letter-spacing: 0px;&quot;&gt;Unicode&amp;reg;&amp;nbsp;Technical&amp;nbsp;Standard&amp;nbsp;#10&lt;/span&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;a href=&quot;https://unicode-org.github.io/icu/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://unicode-org.github.io/icu/ : ICU 문서&lt;/a&gt;&lt;/p&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;a href=&quot;https://webcache.googleusercontent.com/search?q=cache:W2Mex4SS0ygJ:https://postgresql.verite.pro/blog/2019/10/14/nondeterministic-collations.html&amp;amp;cd=1&amp;amp;hl=ko&amp;amp;ct=clnk&amp;amp;gl=kr&quot;&gt;https://webcache.googleusercontent.com/search?q=cache:W2Mex4SS0ygJ:https://postgresql.verite.pro/blog/2019/10/14/nondeterministic-collations.html&amp;amp;cd=1&amp;amp;hl=ko&amp;amp;ct=clnk&amp;amp;gl=kr&lt;/a&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;PostgreSQL&amp;nbsp;에서는&amp;nbsp;대소문자&amp;nbsp;등&amp;nbsp;구분하는&amp;nbsp;문제로&amp;nbsp;엄청&amp;nbsp;골치아펐는데..&amp;nbsp;알고보니..&amp;nbsp;&lt;u&gt;컬레이션을&amp;nbsp;지원한다&lt;/u&gt;!!!!&amp;nbsp;&lt;br /&gt;오히려&amp;nbsp;컬레이션에&amp;nbsp;관해서는&amp;nbsp;maria나&amp;nbsp;ms&amp;nbsp;보다&amp;nbsp;비교도&amp;nbsp;안되게&amp;nbsp;많은&amp;nbsp;것을&amp;nbsp;지원하는것&amp;nbsp;같다..&amp;nbsp;(힌트는&amp;nbsp;진짜&amp;nbsp;지원하지&amp;nbsp;않는다&amp;nbsp;ㅋㅋ.&amp;nbsp;)... &lt;br /&gt;수많은 곳을 검색하고 메뉴얼대로 해도 안되서, 포기하고 있었다..&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&lt;br /&gt;수많은 곳에서 ilike 또는 upper 와 FBI 만 알려주고. 메뉴얼대로 해도 안되서 반포기상태였다.(오죽했으면 1년만에 티스토리에 로그인을 해서 글을 남기고 있다.....)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;ilike, upper, fbi, mapping 방식들은 계속 검색이나 성능 문제들이 계속 나올것이고.. (꼼수를 쓰면 계속 발목 잡힌다..)&lt;br /&gt;글로벌 서비스인경우 악센트, 전각반각, 일본어(히나가라/카나)는 해결할 수 없다.&amp;nbsp;&amp;nbsp;(다른 dbms는 모두 컬레이션 설정을 통해 설정할 수 있다.) .. 단순하게 공백 문자만 봐도 종류가 한두개가 아니다..&amp;nbsp;&lt;br /&gt;&lt;br /&gt;하지만.. 결론은.. PG 도 다른 DBMS 와 마찮가지로 컬레이션을 설정할 수 있었다!!!! .&lt;b&gt;(지금 너무 멀리와버렸는데... 큰일났다 진짜.... 진심.... )&lt;/b&gt;&lt;br /&gt;(왜 메뉴얼대로는 안되는지 모르겠지만..이 부분은 더 확인을 해야한다..) &lt;br /&gt;&lt;br /&gt;아래 테스트는 편의상 컬럼단위로 설정했지만.. database 또는 스키마 단위로 설정이 가능할것이다.&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;먼저 메뉴얼에 있는 예시는 아래와 같은데.. 이건 내 환경에선 안된다... ..&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1705386750609&quot; class=&quot;sql&quot; data-ke-language=&quot;sql&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;CREATE COLLATION case_insensitive (
provider = icu,
locale = 'und-u-ks-level2',  
deterministic = false
);&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;그래서 다시 찾은게 있는데...&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;요기서 찾은대로 하니깐 된다... (&lt;a href=&quot;https://dba.stackexchange.com/questions/255780/case-insensitive-collation-still-comparing-case-sensitive&quot;&gt;https://dba.stackexchange.com/questions/255780/case-insensitive-collation-still-comparing-case-sensitive&lt;/a&gt;&amp;nbsp; 왜 이런 중요한 내용이 메뉴얼엔 없을까??)&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;&amp;gt;&amp;gt; 하지만.. 메뉴얼대로 하는게 더 많은 것을 지원하는같다.. 더 찾아봐야 함.&lt;/p&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; table-layout: fixed;&quot; border=&quot;1&quot; width=&quot;100%&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10.0px; margin: 0.0px; border: 1.0px solid #d9d9d9;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;div&gt;CREATE COLLATION collat_ci2 (&lt;/div&gt;
&lt;span&gt;provider = 'icu',&lt;br /&gt;locale = '@colStrength=&lt;span style=&quot;color: #ff0000;&quot;&gt;Primary&lt;/span&gt;',&lt;br /&gt;deterministic = false&lt;br /&gt;);&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;/div&gt;
&lt;div&gt;UTS10-D4. Primary Weight: The first collation weight in a collation element.&lt;/div&gt;
&lt;div&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;primary&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;weight is also called the Level 1 weight. Level 1 is also abbreviated as L1.&lt;/div&gt;
&lt;div&gt;UTS10-D5. Secondary Weight: The second collation weight in a collation element.&lt;/div&gt;
&lt;div&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;secondary&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;weight is also called the Level 2 weight. Level 2 is also abbreviated as L2.&lt;/div&gt;
&lt;div&gt;UTS10-D6. Tertiary Weight: The third collation weight in a collation element.&lt;/div&gt;
&lt;div&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;tertiary&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;weight is also called the Level 3 weight. Level 3 is also abbreviated as L3.&lt;/div&gt;
&lt;div&gt;UTS10-D7. Quaternary Weight: The fourth collation weight in a collation element.&lt;/div&gt;
&lt;div&gt;A&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;color: #ff0000;&quot;&gt;quaternary&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;weight is also called the Level 4 weight. Level 4 is also abbreviated as L4.&lt;/div&gt;
&lt;span&gt;&lt;br /&gt;&lt;/span&gt;&lt;br /&gt;&lt;span&gt;Table 2.&amp;nbsp;&lt;a href=&quot;https://www.unicode.org/reports/tr10/#Comparison_Levels_Table&quot;&gt;Comparison Levels&lt;/a&gt;&lt;/span&gt;&lt;br /&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
Level Description Examples &lt;br /&gt;L1 Base&amp;nbsp;characters role&amp;nbsp;&amp;lt;&amp;nbsp;roles&amp;nbsp;&amp;lt;&amp;nbsp;rule &lt;br /&gt;L2 Accents role&amp;nbsp;&amp;lt;&amp;nbsp;r&amp;ocirc;le&amp;nbsp;&amp;lt;&amp;nbsp;roles &lt;br /&gt;L3 Case/Variants role&amp;nbsp;&amp;lt;&amp;nbsp;Role&amp;nbsp;&amp;lt;&amp;nbsp;r&amp;ocirc;le &lt;br /&gt;L4 Punctuation role&amp;nbsp;&amp;lt;&amp;nbsp;&amp;ldquo;role&amp;rdquo;&amp;nbsp;&amp;lt;&amp;nbsp;Role &lt;br /&gt;Ln Identical role&amp;nbsp;&amp;lt;&amp;nbsp;ro□le&amp;nbsp;&amp;lt;&amp;nbsp;&amp;ldquo;role&amp;rdquo; &lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;레벨에 따라 설정것이 다른것 같은데... 일단 가장높은 단계로 설정하니 모든게 해결된다..&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;테스트 코드&lt;/h3&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; table-layout: fixed;&quot; border=&quot;1&quot; width=&quot;100%&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10.0px; margin: 0.0px; border: 1.0px solid #d9d9d9;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;div&gt;CREATE COLLATION collat_ci2 (&lt;/div&gt;
&lt;div&gt;provider = 'icu',&lt;br /&gt;locale = '@colStrength=Primary',&lt;br /&gt;deterministic = false&lt;br /&gt;);&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;CREATE TABLE names(&lt;br /&gt;first_name varchar(10) collate collat_ci2,&lt;br /&gt;last_name varchar(10) collate collat_ci2&lt;br /&gt;);&lt;br /&gt;&lt;br /&gt;insert into names values&lt;br /&gt;('Anton','Eggeｒ'),&lt;br /&gt;('Anton','EggeＲ'),&lt;br /&gt;('Berta','egger'),&lt;br /&gt;('Berta','egger'),&lt;br /&gt;('Conrad','Egger');&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;insert into names values&lt;br /&gt;('Anton','cote'),&lt;br /&gt;('Anton','cot&amp;eacute;'),&lt;br /&gt;('Anton','c&amp;ocirc;te'),&lt;br /&gt;('Conrad','c&amp;ocirc;t&amp;eacute;');&lt;/div&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;b&gt;조회결과&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;
&lt;table style=&quot;border-collapse: collapse; table-layout: fixed;&quot; border=&quot;1&quot; width=&quot;100%&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;padding: 10.0px; margin: 0.0px; border: 1.0px solid #d9d9d9;&quot; colspan=&quot;1&quot; rowspan=&quot;1&quot;&gt;
&lt;div&gt;&lt;b&gt;select * from names where last_name= 'egger'&lt;/b&gt;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;first_name last_name &lt;br /&gt;Anton Egger &lt;br /&gt;Berta egger &lt;br /&gt;Conrad Egger &lt;br /&gt;Anton Eggeｒ &lt;br /&gt;Anton EggeＲ&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;b&gt;Select * from names where last_name= 'cote'&lt;/b&gt; &lt;br /&gt;first_name last_name &lt;br /&gt;Anton cote &lt;br /&gt;Anton cot&amp;eacute; &lt;br /&gt;Anton c&amp;ocirc;te &lt;br /&gt;Conrad c&amp;ocirc;t&amp;eacute;&lt;br /&gt;&lt;br /&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/div&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;공백(whitespace)&amp;nbsp;대한&amp;nbsp;언급이&amp;nbsp;있지만,&amp;nbsp;뒷공백&amp;nbsp;무시에&amp;nbsp;대한&amp;nbsp;이야기는&amp;nbsp;아닌것&amp;nbsp;같음.&amp;nbsp; &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;-&amp;nbsp;다른&amp;nbsp;dbms의&amp;nbsp;경우&amp;nbsp;varchar&amp;nbsp;타입일때&amp;nbsp;뒷공백이&amp;nbsp;제거되는데,&amp;nbsp;pg&amp;nbsp;는&amp;nbsp;text&amp;nbsp;타입으로&amp;nbsp;생성되면서,&amp;nbsp;뒷공백이&amp;nbsp;무시되는건&amp;nbsp;아닌것&amp;nbsp;같음..&amp;nbsp;하지만&amp;nbsp;더&amp;nbsp;찾아보면&amp;nbsp;될수도&amp;nbsp;ㅋㅋㅋ&lt;br /&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;정렬순서&lt;/b&gt; &lt;br /&gt;&lt;br /&gt;&lt;br /&gt;pg&amp;nbsp;메뉴얼에&amp;nbsp;정렬순서도&amp;nbsp;바꿀수&amp;nbsp;있는&amp;nbsp;옵션이&amp;nbsp;있음.&amp;nbsp;예를들면..&amp;nbsp;소문자가&amp;nbsp;대문자보다&amp;nbsp;먼저&amp;nbsp;정렬순서를&amp;nbsp;바꿀수&amp;nbsp;있다던지... &lt;br /&gt;dbms&amp;nbsp;를&amp;nbsp;변경하고,&amp;nbsp;정렬순서가&amp;nbsp;달라진다는&amp;nbsp;민원을&amp;nbsp;해결할&amp;nbsp;수&amp;nbsp;있을까?&amp;nbsp;ㅎㅎ &lt;br /&gt;&lt;br /&gt;&lt;/p&gt;
&lt;div&gt;내용추가...&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;그런데 like 검색은 안된다?????? 아... PG놈들 ... 만들다 말았네...&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://stackoverflow.com/questions/71663281/postgresql-case-insensitive-and-accent-insensitive-search&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://stackoverflow.com/questions/71663281/postgresql-case-insensitive-and-accent-insensitive-search&lt;/a&gt;&lt;/p&gt;
&lt;div&gt;이와 관련된 블로거 게시글&lt;/div&gt;
&lt;div&gt;https://www.cybertec-postgresql.com/en/case-insensitive-pattern-matching-in-postgresql/&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;</description>
      <category>DataBase/PostgreSQL</category>
      <category>collation</category>
      <category>PostgreSQL</category>
      <category>Unicode</category>
      <category>대소문자</category>
      <category>정렬</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/307</guid>
      <comments>https://tawool.tistory.com/307#entry307comment</comments>
      <pubDate>Thu, 20 Oct 2022 19:40:27 +0900</pubDate>
    </item>
    <item>
      <title>[PostgreSQL] Sequence의 조금 다른 Cache 특성.</title>
      <link>https://tawool.tistory.com/306</link>
      <description>&lt;div data-pm-slice=&quot;1 1 []&quot; data-en-clipboard=&quot;true&quot;&gt;시퀀스의 cache 설정은 세션레벨에서 동작 함.&amp;nbsp;&lt;/div&gt;
&lt;div data-pm-slice=&quot;1 1 []&quot; data-en-clipboard=&quot;true&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;즉, cache 100 으로 설정했을때,&lt;/div&gt;
&lt;div&gt;1번 세션에서 nextval하면 1이 표시되고&lt;/div&gt;
&lt;div&gt;2번 세션에서 netxtval 하면 101 이 표시된다...&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;메뉴얼에는 관련내용을 cache 쪽에 설명을 하지 않고 notes 에 남겨놨다..&lt;/p&gt;
&lt;table style=&quot;border-collapse: collapse; width: 100%;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 100%;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;Unexpected results might be obtained if a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;cache&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;setting greater than one is used for a sequence object that will be used concurrently by multiple sessions. Each session will allocate and cache successive sequence values during one access to the sequence object and increase the sequence object's&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;last_value&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;accordingly. Then, the next&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;cache&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;-1 uses of&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;nextval&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;within that session simply return the preallocated values without touching the sequence object. So, any numbers allocated but not used within a session will be lost when that session ends, resulting in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;&quot;holes&quot;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #0d0a0b;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;in the sequence.&lt;br /&gt;&lt;br /&gt;&lt;a href=&quot;https://www.postgresql.org/docs/9.5/sql-createsequence.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://www.postgresql.org/docs/9.5/sql-createsequence.html&lt;/a&gt;&lt;br /&gt;&lt;/span&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DataBase/PostgreSQL</category>
      <category>PostgreSQL</category>
      <category>Sequence</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/306</guid>
      <comments>https://tawool.tistory.com/306#entry306comment</comments>
      <pubDate>Wed, 1 Dec 2021 17:32:59 +0900</pubDate>
    </item>
    <item>
      <title>PostgreSQL Partition 과 plan_cache_mode 파라미터.</title>
      <link>https://tawool.tistory.com/305</link>
      <description>&lt;div data-pm-slice=&quot;1 1 []&quot; data-en-clipboard=&quot;true&quot;&gt;테이블에 리스트 파티션을 약 8000여개 생성 (이렇게 사용하는곳이 없을줄 알았는데..우리가 이렇게 씀.)&lt;/div&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;div&gt;&lt;b&gt;현상&lt;/b&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Loop 등을 수행하는데 5-6 번째에서 한참동안 멈춰있다가 실행 또는 db 비정상 종료 됨.&lt;/li&gt;
&lt;li&gt;메모리가 계속 증가&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;이슈1&lt;/b&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;div&gt;쿼리를 작성할때 파티션 테이블의 파티션 기준에 대한 조건이 항상 있어야 함.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;후행 테이블일때 조인 조건으로 받아먹는건 의미 없음(비결정적으로 판단하여 모든 파티션을 읽는 실행계획이 생성됨)&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;메모리 사용량이 계속 증가하는 현상과 함께 심한 경우 db 가 비정상종료되는 경우도 발생함.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;&lt;b&gt;이슈2&lt;/b&gt;&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;div&gt;모든 파티션 조건을 추가해도, 같은 쿼리가 여러번 (5-6)수행되면, 내부적으로 실행계획을 재사용하기 위해 플랜을 생성하게 되는데, 이때 또 이슈 1과 같은 현상이 발생 함.&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;해결하기 위해 환경변수를 설정해야 함.&amp;nbsp; set plan_cache_mode = 'force_custom_plan&lt;/div&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;div&gt;특히 파라미터를 설정하지 않으면 같은 원인으로 프로시져 내부에서 loop 를 돌리거나 했을때 파티션 테이블이 사용되면 5-6번째에&amp;nbsp; 멈추는 현상이 발생한다.&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;div data-codeblock=&quot;true&quot;&gt;
&lt;div data-plaintext=&quot;true&quot;&gt;plan_cache_mode( enum)&lt;/div&gt;
&lt;div data-plaintext=&quot;true&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-plaintext=&quot;true&quot;&gt;준비된 명령문(예: PL/pgSQL에 의해 명시적으로 준비되거나 암시적으로 생성됨)은 사용자 정의 또는 일반 계획을 사용하여 실행할 수 있습니다. 사용자 지정 계획은 특정 매개변수 값 집합을 사용하여 실행할 때마다 새로 만들어지는 반면 일반 계획은 매개변수 값에 의존하지 않으며 실행 전반에 걸쳐 재사용할 수 있습니다. 따라서 일반 계획을 사용하면 계획 시간이 절약되지만 이상적인 계획이 매개변수 값에 크게 의존하는 경우 일반 계획은 비효율적일 수 있습니다. 이러한 옵션 사이의 선택은 일반적으로 자동으로 이루어지지만 로 재정의할 수 있습니다 plan_cache_mode. 허용되는 값은 auto(기본값) force_custom_plan및 force_generic_plan입니다. 이 설정은 캐시된 계획이 준비될 때가 아니라 실행할 때 고려됩니다. 자세한 내용은 준비를 참조하십시오&lt;/div&gt;
&lt;div data-plaintext=&quot;true&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div data-plaintext=&quot;true&quot;&gt;&lt;a href=&quot;https://www.postgresql.org/docs/12/runtime-config-query.html&quot;&gt;https://www.postgresql.org/docs/12/runtime-config-query.html&lt;/a&gt;&lt;/div&gt;
&lt;/div&gt;</description>
      <category>DataBase/PostgreSQL</category>
      <category>memory</category>
      <category>Partition</category>
      <category>plan_cache_mode</category>
      <category>PostgreSQL</category>
      <category>비정상종료</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/305</guid>
      <comments>https://tawool.tistory.com/305#entry305comment</comments>
      <pubDate>Wed, 1 Dec 2021 17:21:16 +0900</pubDate>
    </item>
    <item>
      <title>[MARIADB] COLLATE 관련 설정..</title>
      <link>https://tawool.tistory.com/304</link>
      <description>&lt;p&gt;기존 MS 에서 LIKE '%keyword%' 로 동작하는 기능을 MARIADB 의 mroonga(전문검색) 으로 사용하기 위해 테스트 중에 발생한 일들은 기록함.&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;CREATE TABLE `TEST` (&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;`COM_CODE` varchar(6) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;`HID` bigint(20) DEFAULT NULL,&lt;/p&gt;
&lt;p&gt;.....&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&amp;nbsp;PRIMARY KEY (`COM_CODE`,`PROD_CD`)&lt;/p&gt;
&lt;p&gt;) ENGINE=Mroonga DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='ENGINE &quot;INNODB&quot;, flags &quot;TABLE_HASH_KEY|KEY_LARGE&quot;';&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;다국어 테스트 검색&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;문제가 발생한 원인은 collation 과 관련있다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;기본적으로 maria 는 utf8_general_ci 를 사용한다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;이&amp;nbsp;utf8_general_ci 는 일본어 가타카타/히나가라 그리고 전각/반각을 모두 다른 문자로 인식한다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ms 는 별도로 구분하지 않는다. like 검색을 수행하면 모두 동일한 문자로 인식하고 검색된다..&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;p&gt;일본어 검색 이슈로 collation를 utf8_unicode_ci 으로 변경했는데&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;b&gt;MARIADB 를&lt;/b&gt; &lt;b&gt;utf8_unicode_ci 으로 구성함으로써&amp;nbsp;&lt;/b&gt;&lt;b&gt;다음 문제들이 발생했다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;서로 다른&amp;nbsp;collation 인 테이블 조인시 에러 발생&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;이미 서비스중인 다른 테이블은&amp;nbsp;utf8_general_ci 으로 생성되었기 때문에 변경이 어렵다.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;해결책으로 on 절의 드라이빙 테이블의 조건에 COLLATE utf8_general_ci 으로 드리븐 테이블의 collate 에 맞게 변경해주면 된다.. 하지만. 통계에 따라 조인 순서가 변경되어야 하는 경우 문제가 될 수 있다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;p&gt;Procedure 호출시 session 레벨의&amp;nbsp;collation은 utf8_general_ci인데 테이블이 utf8_unicode_ci 라면, input parameter 가 조건으로 사용될 때 에러 발생&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;input param 에COLLATE utf8_unicode_ci 를 붙여주면 해결된다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;사용자는 utf8_general_ci으로 호출했지만, procedure 내부에서 utf8_unicode_ci 으로 변환해서 사용한다.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;p&gt;하지만, 위 두가지 문제로 그냥 utf8_general_ci으로 결정되었다.&lt;/p&gt;
&lt;/li&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;일본어의 경우 매우 까다롭기 때문에, 아에 처음부터 히라가나/가타카나 중 하나만 사용하게 제한해야 하며, 전각과 반각도 동일하게 제한해야 한다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;만약 일본 고객이 증가하면, 기존 데이터 마이그레이션도 고려해야 할 것 같다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;li&gt;
&lt;p&gt;&lt;a href=&quot;https://www.evernote.com/shard/s68/nl/7782699/eb06623e-e61d-45cc-a3e1-407d81cc76d3&quot;&gt;[MARIA] 전문검색 (COLLATE, MS비교, BULK DML, 악센트, 대소문자,전각/반각, 일본어 가나)&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;데이터 마이그레이션 이슈&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;ms 에서는 ⓐ와 a 를 다른 문자로 인식하지만, utf8_unicode_ci 에서는 같은 문자로 인식한다. 따라서 ms 의 데이터를 maria 으로 마이그레이션을 진행하는데 충돌키 오류가 발생한다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;①, 1 도 마찬가지이다. 애초에 pk 컬럼에 이런 데이터를 허용한것도 문제지만;;;;;;;;;;;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;이것도 unicode 으로 못간 이유 중에 하나다.&amp;nbsp;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;collation 설정은 대/소문자 구분에나 영향이 있는 줄 알았는데&lt;/p&gt;
&lt;p&gt;&lt;b&gt;단순히 정렬순서만 영향이 있는게 아니라서 함부로 결정할 수 있는 속성이 아니다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;이런 면에서 MS 에서 이해가 안되는 점이 있다.&amp;nbsp;&lt;/b&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;먼저 기본적으로 MS 는 일본어의 가타카나/히라가나 그리고 전각/반각을 구분하지 않고 검색해준다. 그런데&amp;nbsp;ⓐ와 a 는 다른문자로 검색된다 ;;;; 뭔 차이일까..&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&amp;amp;&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>DataBase/MYSQL&amp;amp;MARIA</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/304</guid>
      <comments>https://tawool.tistory.com/304#entry304comment</comments>
      <pubDate>Fri, 28 Jun 2019 19:19:18 +0900</pubDate>
    </item>
    <item>
      <title>buffer pool dump &amp;amp; import (메모리 채우기)</title>
      <link>https://tawool.tistory.com/303</link>
      <description>&lt;p&gt;&lt;span&gt;&lt;h4 style=&quot;-en-clipboard:true;&quot;&gt;&lt;span style=&quot;font-weight: normal;&quot;&gt;버퍼풀에 캐시된 페이지 정보를 내려받고 로드할 수 있는 기능으로, 운영중에도 가능하고, 재기동시 자동으로 동작하도록 설정 할 수 있다.&lt;/span&gt;&lt;/h4&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;내려받는 것은 페이지 주소만 작은 텍스트 파일로 받기 때문에 운영중에&amp;nbsp;수행해도 관계없지만, 로드하는 것은 실제 데이터파일에서 페이지를 읽어 메모리에 올리기 때문에 주의해야 한다.&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;10.2 부터는 재기동시 자동으로 이 기능을 사용하며 innodb_buffer_pool_dump_pct = 25% 으로 설정되었다..&lt;/div&gt;&lt;/span&gt;&lt;span&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/div&gt;&lt;div&gt;&lt;span style=&quot;font-weight: bold;&quot;&gt;아래 파라미터를 참고하여 사용하자. (10.2.2 부터는 기본적으로 사용한다)&lt;/span&gt;&lt;/div&gt;&lt;div&gt;innodb_buffer_pool_dump_at_shutdown

&lt;/div&gt;&lt;div&gt;innodb_buffer_pool_dump_now

&lt;/div&gt;&lt;div&gt;innodb_buffer_pool_dump_pct

&lt;/div&gt;&lt;div&gt;innodb_buffer_pool_load_at_startup

&lt;/div&gt;&lt;div&gt;innodb_buffer_pool_load_now

&lt;/div&gt;&lt;/span&gt;&lt;/p&gt;</description>
      <category>DataBase/MYSQL&amp;amp;MARIA</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/303</guid>
      <comments>https://tawool.tistory.com/303#entry303comment</comments>
      <pubDate>Thu, 13 Dec 2018 14:27:34 +0900</pubDate>
    </item>
    <item>
      <title>[MSSQL] HASH 조인 제약 (메시지8622)</title>
      <link>https://tawool.tistory.com/302</link>
      <description>&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;hash 조인 조인 조건이&amp;nbsp;where 절 등에 사용되는 등 특정 케이스에서 아래와 같이 오류가 발생한다.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;하단 보미네 님의 자료를 참고하자..&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style=&quot;-en-clipboard:true;&quot;&gt;&lt;div class=&quot;txc-textbox&quot; style=&quot;border-style: dashed; border-width: 1px; border-color: rgb(203, 203, 203); background-color: rgb(255, 255, 255); padding: 10px;&quot;&gt;&lt;div&gt;메시지 8622, 수준 16, 상태 1, 줄 2&lt;/div&gt;&lt;div style=&quot;margin-top: 1em; margin-bottom: 1em;&quot;&gt;이 쿼리에 정의된 힌트로 인해 쿼리 프로세서에서&amp;nbsp;&lt;span style=&quot;border: none; background-color: rgb(212, 42, 27); color: rgb(255, 255, 255); line-height: 1.5;&quot;&gt;쿼리 계획을 생성할 수 없습니다&lt;/span&gt;. 힌트를 지정하거나 SET FORCEPLAN을 사용하지 않고 쿼리를 다시 전송하십시오.&lt;/div&gt;&lt;/div&gt;&lt;p style=&quot;margin-right: 0px; margin-left: 0px; padding: 0px; border: none; line-height: 1.5;&quot;&gt;&lt;/p&gt;&lt;/div&gt;&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;나눔고딕&quot;&gt;문법적인 오류가 아닌데&amp;nbsp;사용자에게 런타임에 오류를 표시하는지 이해가 안된다... 알아서 회피해서 결과를 보여주면 될것 같은데...&amp;nbsp;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;font face=&quot;나눔고딕&quot;&gt;&lt;br /&gt;&lt;/font&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;이 문제는 2012, 2017 에서는 발생하지 않는다.&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;&lt;p&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;참고자료:&lt;/span&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;a href=&quot;http://sqlsql.tistory.com/101&quot; style=&quot;border: none; line-height: 1.5;&quot;&gt;http://sqlsql.tistory.com/101&lt;/a&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;font-family: 나눔고딕;&quot;&gt;[보미네]&lt;/span&gt;&lt;/p&gt;</description>
      <category>DataBase/MS - SQL</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/302</guid>
      <comments>https://tawool.tistory.com/302#entry302comment</comments>
      <pubDate>Thu, 13 Dec 2018 14:21:19 +0900</pubDate>
    </item>
    <item>
      <title>메크로 기능으로 HTML 를 위키 (WIKI) 에 표시하기.</title>
      <link>https://tawool.tistory.com/297</link>
      <description>&lt;div&gt;레드마인 버전 : 2.6&amp;nbsp;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;br /&gt;&lt;/div&gt;&lt;div&gt;&lt;p&gt;위키에서 HTML가 즉시 표시가 안되기 때문에 메크로를 사용해야한다.&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;1. macros.rb 파일에 아래 소스를 넣는다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;- 하단에 macro 들이 모여있는 곳이 있다. 중간에 넣어주자..&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;{redmine_home}\apps\redmine\htdocs\lib\redmine\wiki_formatting\macros.rb&amp;nbsp;&lt;/p&gt;&lt;pre style=&quot;margin: 1em 1em 1em 1.6em; padding: 8px; background-color: rgb(250, 250, 250); border: 1px solid rgb(226, 226, 226); width: auto; overflow-x: auto; overflow-y: hidden; color: rgb(72, 72, 72); font-size: 12px;&quot;&gt;desc &quot;Insert html&quot; + &quot;\n\n&quot; + &quot; !{{html\n&amp;lt;HTML CODE HERE&amp;gt;\n}}&quot; 
macro :html do |obj, args, text|
    return unless User.current.allowed_to?(:edit_wiki_pages, @project)
    text.html_safe
end&lt;/pre&gt;&lt;p&gt;2. redmine manager 툴을 이용하여 레드마인 프로세스 재기동&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;3. 위키 작성&lt;/p&gt;&lt;p&gt;- {{hmlt( &amp;nbsp; )}} 구문을 사용한다.&lt;/p&gt;&lt;pre style=&quot;margin: 1em 1em 1em 1.6em; padding: 8px; background-color: rgb(250, 250, 250); border: 1px solid rgb(226, 226, 226); width: auto; overflow-x: auto; overflow-y: hidden; color: rgb(72, 72, 72); font-size: 12px;&quot;&gt;{{html(
    html 소스
  )}}&lt;/pre&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;모든 테그를 테스트를 하지 않았지만, table 테그는 잘 표시된다.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;레드마인 위키에 표를 그리는 과정은 정말 힘들다.&amp;nbsp;&lt;/p&gt;&lt;div&gt;&lt;p&gt;간단한 표는 간단하지만 복잡한 표는 그리기도 힘들지만, 편집하는것도 만만치 않다. &amp;nbsp;&lt;br /&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;&lt;/p&gt;&lt;p&gt;메크로 참고 :&amp;nbsp;&lt;a href=&quot;http://www.redmine.org/boards/2/topics/2677&quot; target=&quot;_blank&quot; class=&quot;tx-link&quot;&gt;http://www.redmine.org/boards/2/topics/2677&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;br /&gt;&lt;/p&gt;</description>
      <category>Redmine</category>
      <author>타울</author>
      <guid isPermaLink="true">https://tawool.tistory.com/297</guid>
      <comments>https://tawool.tistory.com/297#entry297comment</comments>
      <pubDate>Wed, 8 Feb 2017 11:39:24 +0900</pubDate>
    </item>
  </channel>
</rss>