반응형 데이터베이스 이야기/MySQL16 [MySql] 5.7.x 비밀번호 변경 sudo grep 'temporary password' /var/log/mysqld.log mysql -uroot -p ERROR 1820 (HY000): You must reset your password using ALTER USER statement before executing this statement. alter user 'root'@'localhost' identified by 'root1234'; 데이터베이스 이야기/MySQL 2023. 7. 25. [MySQL] 8.0 사고 기록 굉장히 오랜만에 블로그를 작성하네요 ~~ 오늘 아주 큰?! 사고로 이어질뻔했던 이슈가 하나 있어서 기록으로 남겨 보려고 합니다. mysql 8.0 db 의 커넥션 상태가 증가만 하고 해소가 되지 않는 것!!!! 오늘 테스트를 빡시게 돌려보다가 보니 too many connections 오류가 다수 발생 하는 것 !! 곧바로 db 설정 원인 분석 ~~ show variables like 'max_connections'; 로 확인 했을 때 맥스 커넥션은 151로 설정 되어 있으며 SHOW STATUS LIKE 'Threads_connected' -- 커넥션 맺어져 있는 수 의 값이 계속 증가만 하고 해소가 되지 않았다. (여기서 151개가 초과 하면 바로 too many 오류 발생 ~~) SHOW STATU.. 데이터베이스 이야기/MySQL 2022. 1. 26. [MySQL] 리눅스 CentOS7.x + mysql 5.7 이하버전 설치 후 계정 셋팅, 외부 접속 허용 [비밀번호 설정] mysql -uroot use mysql; 5.7 이하 update user set password=password('root1234') where user='root'; 5.7 이후 update mysql.user set authentication_string = password('비밀번호') where user='root' flush privileges; [외부 접근 허용] grant all privileges on *.* to 'root'@'%' identified by 'root1234'; create user 'root'@'ip 또는 대역' identified by '비밀번호'; flush privileges; 데이터베이스 이야기/MySQL 2020. 9. 15. [MySQL] 커버링 인덱스 커버링 인덱스란?커버링 인덱스란 원하는 데이터를 인덱스에서만 추출할 수 있는 인덱스를 의미합니다. B-Tree 스캔만으로 원하는 데이터를 가져올 수 있으며, 칼럼을 읽기 위해 굳이 데이터 블록을 보지 않아도 됩니다.인덱스는 행 전체 크기보다 훨씬 작으며, 인덱스 값에 따라 정렬이 되기 때문에 Sequential Read 접근할 수 있기 때문에, 커버링 인덱스를 사용하면 결과적으로 쿼리 성능을 비약적으로 올릴 수 있습니다.백문이 불여일견! 아래 테스트를 보시죠.테이블 생성먼저 다음과 같이 테이블을 생성합니다.create table usertest ( userno int(11) not null auto_increment, userid varchar(20) not null default '', nickname.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] 차집합 이 점을 이용해서 LEFT OUTER JOIN으로 차집합을 구현할 수 있다. 오라클이나 MSSQL과 같은 경우는 EXCEPT 혹은 MINUS 등을 사용하면 되겠지만, MySQL은 버전에 따라 지원하는 경우도 있고 아닌 경우도 있다.test1 테이블의 데이터 중 test2 테이블에 있는 데이터를 제외하고 가져오고 싶다. 위의 테이블에서 JOIN하는 column을 기준으로 1, 2는 test2 테이블에도 있으니 제외하고, 3 | 6만을 가져오고 싶은 경우이다.SELECT * FROM test1 a LEFT JOIN test2 b ON (a.aa = b.aa) WHERE b.aa IS NULL; 3 | 6 | null | null test2.aa에 있는 1, 2의 데이터를 제외한 데이터를 test1.aa에서 .. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] 인덱스 생성 조건 MySQL 인덱스에 관해 정리를 하였습니다. MySQL을 잘 알아서 정리를 한것이 아니라, 잘 알고 싶어서 정리한 것이라 오류가 있을수도 있습니다.1. 인덱스란?인덱스 == 정렬인덱스는 결국 지정한 컬럼들을 기준으로 메모리 영역에 일종의 목차를 생성하는 것입니다. insert, update, delete (Command)의 성능을 희생하고 대신 select (Query)의 성능을 향상시킵니다. 여기서 주의하실 것은 update, delete 행위가 느린것이지, update, delete를 하기 위해 해당 데이터를 조회하는것은 인덱스가 있으면 빠르게 조회가 됩니다. 인덱스가 없는 컬럼을 조건으로 update, delete를 하게 되면 굉장히 느려 많은 양의 데이터를 삭제 해야하는 상황에선 인덱스로 지정된 .. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] 실행계획 본문 바로가기DBMS의 쿼리 실행에 같은 결과를 만들어 내는 데 한가지 방법만 있는 것은 아닙니다. 아주 많은 방법이 있지만 그중에서 어떤 방법이 최적이고 최소의 비용이 소모될지 결정해야 합니다. DBMS에서는 쿼리를 최적으로 실행하기 위해 각 테이블의 데이터가 어떤 분포로 저장돼 있는지 통계 정보를 참조하며, 그러한 기본 데이터를 비교해 최적의 실행 계획을 수립하는 작업이 필요합니다. DBMS에서는 옵티마이저가 이러한 기능을 담당합니다.MySQL에서는 EXPLAIN이라는 명령으로 쿼리의 실행 계획을 확인할 수 있으며, 여기에는 많은 정보가 출력됩니다. 실행 계획에 표시되는 내용이 무엇을 의미하고 MySQL 서버가 내부적으로 어떤 작업을 하는지 자세히 살펴보겠습니다. 그리고 어떤 실행 계획이 좋고 나쁜지.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] MySQL 쓰면서 하지 말아야 할 것 17가지 *MySQL 쓰면서 하지 말아야 할 것 17가지*권장사항이다. 이것을 이해하면 당신의 어플리케이션이 더 나은 성능을 발휘할 것이다.다만 이것이 사람의 실력을 판단하는 척도로 사용되서는 안 될 것이다. 작게 생각하기- 조만간 규모가 커질거라면 MySQL ecosystem을 봐야된다. - 그리고 캐싱 빡시게 안 하는 메이저 웹사이트는 없다. - develooper.com의 Hansen PT랑 Ilia 튜토리얼 볼 것 - 처음부터 확장 가능하게 아키텍처 잘 쪼개놔야된다. - 복제랑 파티셔닝 어떻게 할지 미리 계획 세워놔라. - 파일 기반 세션 좀 쓰지마 -_- - 그렇다고 너무 쓸데없이 크게 생각하지도 말 것 - 특히 성능하고 확장성 구분 못 하면 난감함 EXPLAIN 안 써보기- SELECT 앞에 EXPLA.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySQL] MySQL 중복 키 관리 방법 (INSERT 시 중복 키 관리 방법 (INSERT IGNORE, REPLACE INTO, ON DUPLICATE UPDATE) 안내본 문서는 블로그의 운영자인 본인이 Stackoverflow에 올린 답변을 정리한 글입니다.Stackoverflow URLhttp://stackoverflow.com/questions/20342518/on-duplicate-key-update-value-inserting-same-values-twice/20342598질문다음과 같이 INSERT 구문을 사용 중이다.INSERT INTO person VALUES(NULL, 15, 'James', 'Barkely') ON DUPLICATE KEY UPDATE academy_id = VALUES(academy_id); 중복된 값을 여러 번 INSERT한 뒤에 SELECT를 해 보면 중복된 값이 저장되어 있다.mysql> SELECT * FROM person.. 데이터베이스 이야기/MySQL 2020. 4. 10. [MySql] 인라인 뷰 FROM 절에서 사용되는 서브쿼리를 인라인 뷰 라고한다.서브쿼리의 결과가 마치 실행 시에 동적으로 생성된 테이블인 것처럼 사용할 수 있다. 이란인 뷰는 SQL 문이 실행될 때만 임식적으로 생성되는 동적뷰!인라인 뷰를 사용하는 것은 조인 방식을 사용하는 것과 같다. SELECT * FROM ( SELECT * FROM account_user WHERE age = 1) a, account_user cWHERE a.idx = c.idx 데이터베이스 이야기/MySQL 2019. 5. 15. [MySQL] IFNULL 함수 SELECT test, IFNULL(test,'없음') AS 이름 FROM account_user; 데이터베이스 이야기/MySQL 2019. 5. 9. [MySQL] case 문 select age , case when age >= 10then 100 // age 가 10 보다 크면 100else age // 아니면 ageend age3 // 별명from account_user; 데이터베이스 이야기/MySQL 2019. 5. 9. 이전 1 2 다음 💲 추천 글 반응형