1. 程式人生 > 實用技巧 >tomcat8.5.57原始碼閱讀筆記4.1 - StandardContext的init和start

tomcat8.5.57原始碼閱讀筆記4.1 - StandardContext的init和start

隔離級別

索引底層

mysql優化

事務ACID原則

事務:要麼都成功,要麼都失敗

ACID原則:

原子性:要麼都成功,要麼都失敗

一致性:事務前後的資料完整性要保持一致

隔離性:多個使用者併發訪問資料庫時,資料庫為每一個使用者開啟的事務,不能被其他事務的操作資料所幹擾,事務之間要相互隔離

永續性:事務一旦提交則不可逆,被持久化到資料庫中

隔離所導致的問題:

髒讀:一個事務讀取了另一個事務未提交的資料

不可重複讀:多次讀取的某一行資料的結果不同(不一定是錯誤,只是某些場合不對)

幻讀(虛讀):在一個事務內讀到了其他事務插入的資料,導致前後讀取不一致

三大正規化

1NF

原子性:保證每一列不可再分

2NF

前提:滿足第一正規化

每張表只描述一件事情

3NF

前提:滿足第一二正規化

確保資料表中的每一列資料都和主鍵直接相關,而不能間接相關

規範性和效能問題

關聯查詢的表不超過3張,考慮商業化的需求和目標(成本,使用者體驗),資料庫的效能更加重要,有時會故意給某些表增加一些冗餘欄位,從多表查詢變為單表查詢,還會故意增加一些計算列,從大資料量查詢降低為小資料量的查詢

JDBC程式

package com.yl.servlet;

import java.sql.*;

public class JDBCDemo {
public static void main(String[] args) throws SQLException, ClassNotFoundException {
//1.載入驅動
Class.forName("com.mysql.jdbc.Driver");//固定寫法,載入驅動,具體寫法查詢版本

//2.使用者資訊和url
String url = "jdbc:mysql://localhost:3306/資料庫名?useUnicode=true&characterEncoding=utf8&useSSL=true";//useSSL=false
String username = "root";
String password = "1234";

//3.連線成功,資料庫物件
Connection connection = DriverManager.getConnection(url, username, password);

//4.執行SQL的物件
Statement statement = connection.createStatement();

//5.執行SQL的物件去執行SQL,可能存在結果,檢視返回結果
String sql = "";
ResultSet resultSet = statement.executeQuery(sql);//執行查詢操作
statement.execute(sql);//執行任何操作都可
statement.executeUpdate();//更新、插入、刪除操作都可

//如果是查詢
while(resultSet.next()){
//檢視程式碼
}

//6.釋放連線
resultSet.close();
statement.close();
connection.close();
}
}

MySQL索引背後的資料結構及演算法原理