본문 바로가기
반응형

DB14

mysql, mariadb Mysql "Access denied for user ~ " 에러 brew services list 했을때 mariadb 가 stopped로 되어있을때. brew services start mariadb restart 그냥 실행을 하거나. 다시 restart를 해도 서버가 안 켜지는 경우 해결방안을 적어보려고 한다 . [Error] Cannot create PoolableConnectionFactory (Could not connect to address=(host=localhost)(port=3306)(type=master) : Socket fail to connect to host:localhost, port:3306. Connection refused: no further information) 에러는 이런식으로 나왔다. 내 생각에 포트가 충돌나서 그런것 같았 몇.. 2024. 1. 18.
(MySQL / DB) 트리거 트리거는 사전적 의미로 "방아쇠" 를 뜻한다. 방아쇠를 당기면 자동으로 나가듯이 트리거는 Table에 무슨일이 일어나면 자동으로 실행된다. 트리거란 테이블에 삽입, 수정, 삭제 등의 작업이 발생 시에 자동으로 작동되는 개체로,프로시져와 비슷한 모양을 갖는다. ex) 삭제 될때 마다 삭제된 행의 내용등을 다른 테이블에 자동으로 기록하게 하는거 트리거는 insert update, delete 등 의 이벤트가 발생도리 때 작동하는 db개체중 하나다. 프로시저와 차이 직접 실행시킬 수 없고, 테이블에 이벤트가 발생할 경우 실행되고, 매개변수를 사용할 수 없다. 트리거 만드는법 / 예시 CREATE TRIGGER "트리거 이름" After "delete, insert, update" -- 핵심 on "테이블명" .. 2023. 3. 4.
(MySQL/DB) 함수 타 언어의 함수랑 그냥 똑같다. 특정 작업을 수행하고 값을반환 하는 저장 프로시저다. 일반적으로 db에서 미리 정의된 작업을 수행하거나, 사용자가 필요한 작업을 수행할때 사용된다. 프로시저와 매우 유사하지만, 값을 반환하고, 외부에서 호출할 때 사용된다. CREATE function 이름 (매개변수) RETUNRS '타입' begin return '결과값' end 과목명을 주면, 해당 과목의 수강 학생수를 반환하는 함수 만들기. 1. Query 작성 2 입력 파라미터 설정, 리턴타입 정의 3 Begin ~ End 사이 Query 1. query selelct count(*) from Enroll where subject = (select id from subject where name = "역사"); ".. 2023. 3. 3.
(MySQL/DB) 프로시저 프로시저 SQL 쿼리를 미리 작성하여 컴파일 한 후 저장한 객체이다. 여러 쿼리를 한 번에 수행하는 것이다 프로시저는 데이터 베이스의 향상되며, 반복적으로 사용되는 SQL쿼리를 매번 실행하는 것 보다 프로시저를 사용한것이 좋다. 함수와 유사한 느낌이다. 함수는 클라이언트에서 처리하며, 리턴값이 필수이고, 리턴값은 하나만 변환가능하다. 하지만 프로시저는 서버로 보내서 처리하며, 리턴값은 선택하고, 리턴값은 여러개 반환된다. SQL처리하는 위치에서 차이이며, 프로시저가 더 빠른 성능을 보인다. 프로시저는 언제 사용해?? ++ 장점 자주 반복되는 작업을 할 경우 복잡한 작업을 할 경우 보안성을 높여야 할 경우 성능을 높여야 할 경우 예를 들면 회원가입시 포인트도 같이 주는것 이 프로시저는 회원가입과 동시에 지.. 2023. 3. 3.
(MySQL/DB) Hint Hint 옵티마이저의 실행 계획을 원하는 대로 바꿀수 있게 해준다. 계발자가 조인이나 인덱스의 잘못된 실행 계획을 개발자가 직접 바꿀 수 있도록 도와주는 것이다. Select 문에 /*+HINT */ 이렇게 들어간다. 왜 사용해?? 성능 향상: 적절한 힌트를 사용하면 쿼리 성능을 향상시킬 수 있다. 예를 들어, 인덱스를 사용하지 않거나 잘못된 인덱스를 사용하는 쿼리가 있다면 인덱스 힌트를 사용하여 적절한 인덱스를 사용하도록 할 수 있다. 또는 JOIN 순서가 잘못되어 성능이 저하되는 경우 STRAIGHT_JOIN 힌트를 사용하여 JOIN 순서를 강제로 조정할 수 있다. 예측 가능성: 옵티마이저는 실행 계획을 최적화하기 위해 여러 가지 규칙을 적용한다다. 하지만 모든 상황에서 최적의 실행 계획을 만들어내는.. 2023. 3. 2.
(DB/MySQL)옵티마이저 실제로 sql 문을 실행하기전에 실행계획을 찾아야함 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지를 참조하고, 데이터를 기반으로 최적의 실행 계획을 수립해주는 것이 옵티마이저(Optimizer)이다 어떤 DBMS든 쿼리의 실행 계획을 수립하는 옵티마이저는 가장 복잡한 부분으로 알려져있다. 하지만 실행 계획을 이해해야 실행 계획의 불합리한 부분을 찾아내고, 더 최적화된 방법으로 실행 계획을 수립하도록 유도할 수 있다. EXPLAIN : 쿼리의 실행계획을 확인 할 수 있음. 쿼리 실행과정 1.SQL파싱 : 사용자로 부터 요청된 sql문장을 잘게 쪼개어 서버가 이해할 수 있는 수준으로 분리 2. 최적화 및 실행 계획 수립 / 어떤 인덱스를 이용할지 선택 : 불필요한 조건 제거 .. 2023. 3. 2.
반응형