Time of Update: 2018-12-08
drop user 會將該使用者的資訊全部刪掉,而 delete 只會清除user表,其他的比如db表中的資訊還是存在。如果delete 後,再建立一個最小許可權的使用者,那麼他會重用以前的許可權。grant all on test.* to 'test'@'%' identified by 'test';delete from user where user =test;差看db 表mysql> select * from db;+------+---------+------
Time of Update: 2018-12-08
先說明2點開啟緩衝也會帶來開銷,主要表現在一下方面讀取在查詢開始之前必須要檢查緩衝如果查詢是緩衝的,但是不在結果集中,那麼產生結果後儲存資料會帶來一定的開銷向緩衝寫如資料也會帶來開銷有的情況查詢快取不會被緩衝,即使你使用 SQL_CACHE也不能緩衝主要一下幾個引用了使用者自訂函數引用了使用者自訂變數以用了存續過程查詢中包含一些即時的系統函數,比如now引用了暫存資料表雖然上面說到緩衝會帶來一些開銷但是緩衝對mysql
Time of Update: 2018-12-08
innodb這種引擎,與MYISAM引擎的區別很大。特別是它的資料存放區格式等.對於innodb的資料結構,首先要解決兩個概念性的問題: 共用資料表空間以及獨佔資料表空間。什麼是共用資料表空間和獨佔資料表空間共用資料表空間以及獨佔資料表空間都是針對資料的儲存方式而言的。共用資料表空間: 某一個資料庫的所有的表資料,索引檔案全部放在一個檔案中,預設這個共用資料表空間的檔案路徑在data目錄下。 預設的檔案名稱為:ibdata1 初始化為10M。獨佔資料表空間:
Time of Update: 2018-12-08
首先我們來看一個公式,MySQL中記憶體分為全域記憶體和線程記憶體兩大部分(其實並不全部,只是影響比較大的 部分):複製代碼
Time of Update: 2018-12-08
備份資料方法:一:sql語句。LOCKS TABLES tablename READ;//讀鎖定嘗試鎖定表之前,LOCK TABLES不是事務安全型的,會隱含地提交所有活性事務,同時,會隱含地開始一項事務(例如,使用START TRANSACTION),所以,對事務表(如InnoDB)使用LOCK TABLES的正確方法是,設定AUTOCOMMIT=0FLUSH TABLES,SELECT * INTO OUTFILE 'data_bck.sql' FIELDS TERMINATED BY ',
Time of Update: 2018-12-08
mysql建立合并表和分區表有點相似,他是mysql 的一種特性,可以把多個結構相同的myisam表合并為一個虛表,存續引擎必須是merge,當從合并表中查詢就像從子表中查詢一樣,和視圖有寫相似,當建立合并表時也有自己的frm和mrg 檔案。合并表建立方法create table t3(a int primary key );create table t4(a int primary key );create table mrg(a int primary key ) union=
Time of Update: 2018-12-08
MySQL的預設的調度策略可用總結如下:· 寫入操作優先於讀取操作。· 對某張資料表的寫入操作某一時刻只能發生一次,寫入請求按照它們到達的次序來處理。· 對某張資料表的多個讀取操作可以同時地進行。MySQL允許你改變語句調度的優先順序MySQL提供了幾個語句調節符,允許你修改它的調度策略:· LOW_PRIORITY關鍵字應用於DELETE、INSERT、LOAD DATA、REPLACE和UPDATE。· HIGH_PRIORITY關鍵字應用於SELECT和INSERT語句。·
Time of Update: 2018-12-08
mysqld_safe指令碼執行的基本流程:1、尋找basedir和ledir。2、尋找datadir和my.cnf。3、對my.cnf做一些檢查,具體檢查哪些選項請看附件中的注釋。4、解析my.cnf中的組[mysqld]和[mysqld_safe]並和終端裡輸入的命令合并。5、調用parse_arguments函數解析使用者傳遞的所有參數($@)。6、對系統日誌和錯誤記錄檔的判斷和相應處理具體可以參考附件中的注釋,及選項--err-log參數的賦值。7、對選項--user,--pid-fil
Time of Update: 2018-12-08
在使用mysql時,有時需要查詢出某個欄位不重複的記錄,雖然mysql提供有distinct這個關鍵字來過濾掉多餘的重複記錄只保留一條,但往往只用它來返回不重複記錄的條數,而不是用它來返回不重記錄的所有值。其原因是distinct只能返回它的目標欄位,而無法返回其它欄位,這個問題讓我困擾了很久,用distinct不能解決的話,我只有用二重迴圈查詢來解決,而這樣對於一個資料量非常大的站來說,無疑是會直接影響到效率的。所以我花了很多時間來研究這個問題,網上也查不到解決方案。。下面先來看看例子:
Time of Update: 2018-12-08
在mysql的手冊中已經對max_user_connections有一點說明,它是用來限制使用者資源的,怎麼限制使用者資源呢?這裡做了個小測試。首先產看該全域變數的值mysql> select @@max_user_connections;+------------------------+| @@max_user_connections |+------------------------+| 0 |+----------------------
Time of Update: 2018-12-08
暫存資料表是當串連沒有斷開時存在,一旦斷開就不會存在,暫存資料表的資料和結構都在記憶體中,可以做個測驗,你建立一個暫存資料表,但是到響應的資料目錄下並不會找到.frm檔案mysql> CREATE TEMPORARY TABLE tmp_table ( -> -> name VARCHAR(10) NOT NULL, -> value INTEGER NOT NULL -> -> ) ;Query OK, 0 rows
Time of Update: 2018-12-08
間類型:盡量使用TIMESTAMP類型,因為其儲存空間只需要 DATETIME 類型的一半。對於只需要精確到某一天的資料類型,建議使用DATE類型,因為他的儲存空間只需要3個位元組,比TIMESTAMP還少。不建議通過INT類型類儲存一個unix timestamp 的值,因為這太不直觀,會給維護帶來不必要的麻煩,同時還不會帶來任何好處。
Time of Update: 2018-12-08
大量刪除資料必然會在資料檔案中造成不連續的空白空間,而當插入資料時,這些空白空間則會被利用起來 。對於不同的儲存引擎整理片段的方式不一樣。myisam可以有以下方式:mysql> show table status from test like 'testusers'\G*************************** 1. row *************************** .... Rows: 3 Avg_row_length: 45
Time of Update: 2018-12-08
MySql的時間類型有 Java中與之對應的時間類型date java.sql.DateDatetime java.sql.TimestampTimestamp java.sql.TimestampTime
Time of Update: 2018-12-08
在事務性語句執行過程中,伺服器將會進行額外的處理,在伺服器執行時多個事務是並存執行的,為了把他們的記錄在一起,需要引入事務緩衝的概念。在事務完成被提交的時候一同重新整理到二進位日誌。對於非事務性語句的處理。遵循以下3條規則:1)如果非事務性語句被標記為事務性,那麼將被寫入事務緩衝。2)如果沒有標記為事務性語句,而且事務緩衝中沒有,那麼直接寫入二進位日誌。3)如果沒有標記為事務性的,但是事務緩衝中有,那麼寫入事務緩衝。注意如果在一個事務中有非事務性語句,那麼將會利用規則2,優先將該影響非事務表語句
Time of Update: 2018-12-08
由:串連池組件、管理服務和工具組件、sql介面組件、查詢分析器組件、最佳化器組件、 緩衝組件、外掛程式式儲存引擎、物理檔案組成。 mysql是專屬的外掛程式式體繫結構,各個儲存引擎有自己的特點。 mysql各個儲存引擎概述:innodb儲存引擎:[/color][/b] 面向oltp(online transaction
Time of Update: 2018-12-08
複製代碼 代碼如下:<?php class MySession extends DBSQL { /** * __construct() */ public function __construct() { parent::__construct (); } /** * open() * * @param <String> $sSavePath * @param <String>$sSessionNames * *
Time of Update: 2018-12-08
1.建立表:複製代碼 代碼如下:drop table if exists photo;CREATE TABLE photo ( id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100) COMMENT '名稱', photo blob COMMENT '照片')ENGINE=InnoDBDEFAULT
Time of Update: 2018-12-08
我們知道可以將一個海量記錄的 MySQL 大表根據主鍵、時間欄位,條件欄位等分成若干個表甚至儲存在若干伺服器中。 唯一的問題就是跨伺服器批量查詢麻煩,只能通過應用程式來解決。談談在Java中的解決思路。其他語言原理類似。這裡說的分表不是 MySQL 5.1 的 partition,而是人為把一個表分開存在若干表或不同的伺服器。1. 應用程式層級實現見electThreadManager 分表資料查詢管理器它為分表的每個database or server 建立一個 thread
Time of Update: 2018-12-08
MySql通用分頁預存程序過程參數複製代碼 代碼如下:p_cloumns varchar(500),p_tables varchar(100),p_where varchar(4000),p_order varchar(100),p_pageindex int,p_pagesize int,out p_recordcount int,out p_pagecount int $:begin declare v_sqlcounts varchar(4000); declare