수강기간 연장
미해결
업무에 바로 쓰는 SQL 튜닝
수강기간 연장 안되나요ㅕ..?
- sql
- mysql
- dbms/rdbms
- mariadb
- query-tuning
173만명의 커뮤니티!! 함께 토론해봐요.
미해결
업무에 바로 쓰는 SQL 튜닝
수강기간 연장 안되나요ㅕ..?
미해결
업무에 바로 쓰는 SQL 튜닝
LIKE 로 하면 불 필요한 것 까지 스캔할 수 있는 가능성이 있다고 하셨는데요. 말씀해주신 내용이 MySQL 에만 한정인가요? 아니면 Oracle 이나 다른 DB 들도 동일하게 적용되는 내용일까요?
미해결
업무에 바로 쓰는 SQL 튜닝
현재 실행 계획이 강의랑 반대라서 질문 남겨봅니다 드라이빙 테이블이 de 로 나오는 이유가 뭘까요 ?
미해결
C# WPF .NET Core(7.0)
안녕하세요 강사님! 좋은 강의 감사드립니다. 업무랑 여러 상황들 때문에 강의를 못듣고 있다가 어느새 강의 종료일이 다가오고 있는데 혹시 강의 연장이 가능할지요 ㅠㅠ?
미해결
C# WPF .NET Core(7.0)
OnPropertyChanged 해서 선택된 것에서 수정하면 속성 변화를 알고는 동시에 수정되는 것 또한 알았습니다. 혹시 해당 프로그램을 종료하면 저장이 안되어있을텐데, 그 부분에 있어서는 선택된 네임과 에이지의 값을 set 하는 블록 내에서 코딩을 따로 해주면 되는 것일까요? 현재는 age = value; 느낌이면 결국 value을 통해서 age에 바인딩되서 age를 리턴 해서 보여지게 된 것이라고 했을 때 , 모델측에 설정한 list 안의 데이터 값도 변화되서 저장해둘려면 따로 db를 이용해야하는 것일까요 ?
미해결
C# WPF .NET Core(7.0)
Image Source 사용할때 인터넷 연결 상태에서 빌드한 다음 빌드한 파일을 오프라인 환경에서 실행하면 이미지가 그대로 출력 돼나요? 아니면 이미지 참조가 불가능하니 오류가 발생하나요?
미해결
업무에 바로 쓰는 SQL 튜닝
SELECT e.emp_id , s.avg_salary , s.max_salary , s.min_salary FROM EMP e, (select emp_id, ROUND(AVG(annual_salary), 0) avg_salary, ROUND(MAX(annual_salary), 0) max_salary, ROUND(MIN(annual_salary), 0) min_salary from SALARY where emp_id BETWEEN 10001 and 10100 GROUP BY emp_id) s WHERE e.emp_id = s.emp_id; 처음에 답을 안 보고 제가 개선해본 쿼리인데, 필터링 조건을 salary에 넣어주고, 이걸 조인해서(emp의 primary key) 나오는 결과인데 미세하게 더 빠르네요.! 정답 쿼리가 조금 더 느린 이유는 salary 테이블을 3번 접근해서 그런거 같은데(index를 활용하더라도) 맞는지 궁금합니다.
미해결
업무에 바로 쓰는 SQL 튜닝
SELECT REGION , GATE , COUNT (*) AS cnt FROM ENTRY_RECORD WHERE REGION <> '' GROUP BY REGION , GATE WITH ROLLUP ; -- 414ms ROLLUP 사용법이 달라서 구글이나 지피티에 서칭을 해봤습니다. 저처럼 안 되시는 분이 많을 거 같아서 올립니다.
미해결
업무에 바로 쓰는 SQL 튜닝
학습 환경은 docker + mariadb 입니다.! 현재 힌트를 사용해서 Manager 테이블의 인덱스를 강제시켜서 실행시켰는데 다음과 같이 table full scan으로 변환되었습니다. 이거는 mariadb 내부적으로 hint가 올바르지 않다고 생각해 실행 계획을 바꾼걸까요? EXPLAIN SELECT e . FIRST_NAME , e . LAST_NAME FROM EMP e , MANAGER m FORCE INDEX ( PRIMARY ) WHERE e . EMP_ID = m . EMP_ID ;
미해결
업무에 바로 쓰는 SQL 튜닝
SELECT EMP.emp_id, EMP.first_name, EMP.last_name, GRADE.grade_name FROM GRADE, EMP; -- 카테시안 곱 mariadb로 실습을 진행했는데 hash join이 쓰이는게 아니라 flat, BNL join을 사용한다고 되어 있네요? BNL Join 은 MySQL이 인덱스가 없거나 사용할 수 없는 상황에서 기본적으로 사용하는 비효율적인 조인 알고리즘이라는데 원인이 무엇일까요? grade 테이블을 hash join table로 사용하지 않네요?
미해결
업무에 바로 쓰는 SQL 튜닝
안녕하세요. 우선 좋은 강의 만들어주셔서 정말 감사합니다 :) select_type 에서 'simple' 경우 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요? 5-2. 실행계획 항목(1) -> 05:40 영상을 확인해보면 실행계획에서 table 필드 값 "e" 하고 "s" 가 있는데요. 여기서 질문 2가지가 있습니다. 질문1: 여기서 각각의 테이블이 '드라이빙' 또는 '드리븐' 인지 어떻게 알수 있나요? (실행 계획 통해 조회된 데이터 순서대로 판단하면 되는것인지... 궁금하네요.. 그런데 이걸로 100% 판단하기에 조금 어렵다고 들어서요...) 질문2: 만약 테이블 "e" 가 드라이빙 테이블이라고 가정시 실질적으로 쿼리 수행할때 테이블 "e" 에 대한 where 절 조건을 이용해서 먼저 필터링 한다음에 테이블 "s" 하고 조인 수행을 하는것인지 궁금 합니다. 즉 드리아빙 테이블 조건절 이용해서 최대한 필터링 하고 그다음 드이븐 테이블하고 조인을 수행하는지 궁금합니다.
미해결
안녕하세요. 스프링부트와 리액트를 이용해 웹앱을 만들고 있는데요, mariadb를 연결해서 회원가입 정보를 저장하려고 하는데 저장이 안 됩니다. 잘 아시는 분들 코드 한번만 봐주실 수 있을까요? 인터넷과 GPT 모두 이용해보아도 해결이 안 되네요 너무 간절합니다 ㅠㅠ 부탁드립니다. User.java package com.dohwaji.model; import jakarta.persistence.*; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @Entity @Table(name = "users") @Data @AllArgsConstructor @Builder public class User { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) private Long id; private String username; private String password; public User() { } public User(String username, String password) { this.username = username; this.password = password; } public Long getId() { return id; } public void setId(Long id) { this.id = id; } public String getUsername() { return username; } public void setUsername(String username) { this.username = username; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } } UserService.java package com.dohwaji.service; import com.dohwaji.model.User; import com.dohwaji.repository.UserRepository; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; import org.springframework.stereotype.Service; import java.util.Optional; @Service public class UserService { @Autowired private final UserRepository userRepository; @Autowired private BCryptPasswordEncoder bCryptPasswordEncoder; public UserService(UserRepository userRepository) { this.userRepository = userRepository; } public User registerUser(User user) { user.setPassword(bCryptPasswordEncoder.encode(user.getPassword())); return userRepository.save(user); } public User authenticate(String username, String password) { Optional<User> optionalUser = userRepository.findByUsername(username); if (optionalUser.isPresent() && bCryptPasswordEncoder.matches(password, optionalUser.get().getPassword())) { return optionalUser.get(); } return null; } public User createUser(String username, String password) { User user = new User(username, password); return userRepository.save(user); } } UserRepository.java package com.dohwaji.repository; import com.dohwaji.model.User; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; import java.util.Optional; @Repository public interface UserRepository extends JpaRepository<User, Long> { Optional<User> findByUsername(String username); } AuthController.java package com.dohwaji.controller; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.*; import com.dohwaji.service.UserService; import jakarta.servlet.http.HttpServletRequest; import com.dohwaji.repository.UserRepository; import com.dohwaji.model.User; @RestController // REST API 컨트롤러임 @RequestMapping("/api/auth") // 이 컨트롤러의 기본 URL 경로 public class AuthController { @Autowired // UserService 클래스의 인스턴스가 주입 private UserService userService; // 사용자 관련 비즈니스 로직을 담당하는 서비스 계층 @PostMapping("/login") // HTTP POST 요청이 /api/auth/login 으로 들어오면 이 메서드가 실행됨 public ResponseEntity<?> login(@RequestBody User loginRequest) { // login()메서드는 사용자 이름과 비밀번호를 받아 UserService의 authenticate()메서드를 호출 User user = userService.authenticate(loginRequest.getUsername(), loginRequest.getPassword()); if (user != null) { // 토큰 발행 로직 추가 가능 return ResponseEntity.ok(user); // 사용자 인증에 성공하면 사용자 정보를 포함한 HTTP 200 OK 응답을 반환 } else { return ResponseEntity.status(401).body("Invalid credentials"); // 사용자 인증에 실패하면 HTTP 401 Unauthorized 응답을 반환 } } @PostMapping("/register") // HTTP POST 요청이 /api/auth/register 로 들어오면 이 메서드가 실행됨 public ResponseEntity<?> register(@RequestBody User registerRequest, HttpServletRequest request) { // register() 메서드는 사용자 정보를 받아 UserService의 registerUser() 메서드를 호출 User user = userService.registerUser(registerRequest); request.getSession().setAttribute("currentUser", user); // 로그인 된 사용자 정보를 세션에 저장 return ResponseEntity.ok(user); // 회원가입에 성공하면 새로 생성된 사용자 정보를 포함한 HTTP 200 OK 응답을 반환 } @GetMapping("/logout") public String logout(HttpServletRequest request) { request.getSession().invalidate(); // 세션 무효화 return "redirect:/"; // 메인 페이지로 리다이렉트 } } build.gradle plugins { id 'java' id 'org.springframework.boot' version '3.2.5' id 'io.spring.dependency-management' version '1.1.4' } group = 'com.dohwaji' version = '0.0.1-SNAPSHOT' java { sourceCompatibility = '17' } repositories { mavenCentral() } dependencies { implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.projectlombok:lombok' annotationProcessor 'org.projectlombok:lombok' testImplementation 'org.springframework.boot:spring-boot-starter-test' implementation 'org.springframework.boot:spring-boot-starter-security' implementation 'org.springframework.security:spring-security-crypto' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' implementation 'org.mariadb.jdbc:mariadb-java-client' implementation 'jakarta.persistence:jakarta.persistence-api:3.1.0' } tasks.named('test') { useJUnitPlatform() }
미해결
데이터베이스 MariaDB(마리아디비)
수업자료 MARIADB설치PPT - 10.7.3버전이 없네요 구글링 10.7.3 다운로드는 Mirror가 Germany 뿐이구
해결됨
영화 예매 관련 Entity를 작성 후 DB확인차 실행했는데 다른 Entity는 테이블이 잘 만들어진 것을 확인할 수 있었지만 이상하게 Seat Entity만 테이블이 만들어지지 않았습니다. WARN 3508 --- [Movie Ticketing] [ restartedMain] o.m.jdbc.message.server.ErrorPacket : Error: 1146-42S02: Table 'ticketing.seat' doesn't exist WARN 3508 --- [Movie Ticketing] [ restartedMain] o.h.t.s.i.ExceptionHandlerLoggedImpl : GenerationTarget encountered exception accepting command : Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist] org.hibernate.tool.schema.spi.CommandAcceptanceException: Error executing DDL " alter table seat add constraint FKgik5885qsff01sxe7v3kqjrhx foreign key (theater_id) references theater (theater_id)" via JDBC [(conn=216) Table 'ticketing.seat' doesn't exist] at org.hibernate.tool.schema.internal.exec.GenerationTargetToDatabase.accept(GenerationTargetToDatabase.java:94) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlString(Helper.java:233) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.Helper.applySqlStrings(Helper.java:217) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createForeignKeys(SchemaCreatorImpl.java:303) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.createFromMetadata(SchemaCreatorImpl.java:250) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.performCreation(SchemaCreatorImpl.java:172) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:142) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.internal.SchemaCreatorImpl.doCreation(SchemaCreatorImpl.java:118) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.performDatabaseAction(SchemaManagementToolCoordinator.java:256) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] at org.hibernate.tool.schema.spi.SchemaManagementToolCoordinator.lambda$process$5(SchemaManagementToolCoordinator.java:145) ~[hibernate-core-6.4.4.Final.jar:6.4.4.Final] application.yml은 ddl-auto.create 입니다. 대소문자 구분이 문제인가 싶어 @Table(name = "seat")도 추가하고 lower_case_table_names = 1 인 것도 확인했는데 똑같이 에러가 발생하더라구요 하루종일 찾아봐도 이유를 잘 모르겠습니다 왜그런걸까요 ㅠㅠㅠ Seat Entity 코드는 아래와 같습니다. @Entity @Table(name = "seat") class Seat { val row : String? = null val column : Int? = null //좌석 선택 @Enumerated(EnumType.STRING) val selectStatus : SelectStatus? = null // POSSIBLE, IMPOSSIBLE @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "theater_id") val theater : Theater? = null @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = "seat_id") val id : Long = 0L }
미해결
스프링 프레임워크 입문자를 위한 따라하기
Maria DB 설치를 위해 강의와 동일하게 공식 사이트 접속을 했는데요. Mirror 부분에 나라가 Korea가 존재하지 않습니다. 현재 BlendByte-Taipai 라고 되어있는데 이거로 받으면 될까요??
미해결
도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
안녕하세요. heidiSQL 또는 mysql워크벤치이든 접속을 해서 SET SESSION max_recursive_iterations = 10000 ; 를 실행해보면 해당 variables 이 없다고 나오는데요. "Error Code: 1193. Unknown system variable 'max_recursive_iterations' " 혹시 인스톨하는 버전에 따라서 제공되는 시스템변수들이 달라지는 걸까요?? mysql 은 윈도우용으로 버전은 8.0.36을 사용중입니다.
미해결
도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
안녕하세요. [대사와 액션, 회차정보테이블]의 '특정요일 과거일자' 부분에서 나오는 'urlcodemap' 쿼리문 파일이 수업자료에 없는 것 같습니다. 인터넷 구글링 또는 예전 강사님강의자료에는 있긴한데요. 그래도 수업자료로는 올려주시는 게 나을 듯 하여 글을 올립니다.
미해결
도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
안녕하세요. mysql 버전이 8.0 대라서 그런지 contents2 테이블 생성하는 명령어(create or replace TABLE ... ) 가 실행이 안되서 다른 방식으로 수행하였습니다. 혹시 저와 동일한 에러가 나시는 분은 참고하세요. 우선 테이블을 만들고, group_concat() 이 selec까지는 잘 되는데 생성시에는 에러가 나서, /* SQL 오류 (1260): Row 6 was cut by GROUP_CONCAT() */ 구글링을 해보니 max length를 수정해줘야 한다고 하네요. SET group_concat_max_len=150000; 강사님이랑 같은 소스데이터를 사용하는데 왜 에러가 나는 지는 모르겠으나, 관련 명령어를 수행하고 나니 돌아갑니다.
미해결
도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
안녕하세요. [주인공과 등장인물의 집합채, 웹소설정보테이블](4:13) 작가명과 회원아이디를 랜덤하게 생성함에 있어서, 작가명하나에 회원아이디가 여러개로 생성이 될 소지가 있는데요. 실제로 돌려보니 중복이 나오네요. ㅡㅡ; 혹시.. 묶어서 작가명하나에 회원아이디 하나로만 매핑되도록 생성하려면 어떻게 하면 될까요? 샘플로 하는 거라 중복이 이슈거리는 아니지만.. 좀 더 배우고자 하는 마음에 문의드립니다. ㅡㅡ;
미해결
도대체 왜? 도대체 어떻게! DB 설계와 데이터 다루기
안녕하세요. wn_novel테이블 생성 (1:54) 의 수행을 위한 쿼리문이 수업자료로 다운받은 pdf 파일에는 링크가 안보이는데요. 혹시 어디에서 확인할 수 있을까요?? [강의화면] [pdf] 03-2 DATA 생성-웹소설 정보.pdf