臨時資料庫
⑴ 系統資料庫中哪個資料庫可以存放臨時表
sql Server 2005有4個系統資料庫,它們分別為Master、Model、Msdb、Tempdb。SQL 的所有系統信息都記錄在Master資料庫中。model 資料庫用作在 SQL Server 實例上創建的所有資料庫的模板(比如你利用模板創建一張表、一個存儲過程、函數等等,這些模板都是在Model資料庫中存儲的)Msdb資料庫是代理服務資料庫,你設置的一些報警、任務調度、計劃任務等,她們的存儲空間就是這個資料庫。Tempdb是臨時資料庫,你使用的臨時表就是存儲在這個資料庫中。
⑵ sql怎麼建臨時資料庫
沒有聽說過臨時資料庫,只有臨時表
create
database
mytemp;
drop
database
mytemp;
⑶ sql中默認的master等資料庫都是干什麼用的
SQL Server 中4個系統資料庫:Master、Model、Msdb、Tempdb。
1、Master資料庫是SQL Server系統最重要的資料庫,它記錄了SQL Server系統的所有系統信息。
2、model 資料庫用作在 SQL Server 實例上創建的所有資料庫的模板。
3、Msdb資料庫是代理服務資料庫,為其報警、任務調度和記錄操作員的操作提供存儲空間。
4、Tempdb是一個臨時資料庫,它為所有的臨時表、臨時存儲過程及其他臨時操作提供存儲空間。
(3)臨時資料庫擴展閱讀:
系統資料庫的功能:
在SQL Server系統中,系統運行時會用到的相關信息,如系統對象和組態設置等,都是以資料庫的形式存在,而存放這些系統信息的資料庫稱為系統資料庫。
成功安裝SQL Server後,系統會自動建立master、model、msdb、及tempdb等系統資料庫。
例如master資料庫記錄了如此多且重要的信息,一旦資料庫文件損失或損毀,將對整個SQL Server系統的運行造成重大的影響,甚至是得整個系統癱瘓。
⑷ web前端,建立了臨時的資料庫,怎麼獲取數據
數據沒取到的原因個人覺得有以下幾點:
1、SQL語句有問題,可以在對資料庫操作時用到的SQL語句和返回的數據設置斷點進行查看是否符合。
2、如果關於資料庫返回的數據沒有問題,可能是後台傳輸數據到前台的時候傳輸的數據有問題,或者前台獲取的數據方式有問題(「get」)。
3、檢查一下是不是代碼有些地方寫錯了,js裡面多用alter彈窗看看吧,
我本人學習AJAX的時候一般用的是一般處理程序向前台返回JSON數據源,然後在前台再解析json。
⑸ 怎麼修改mysql資料庫臨時表空間大小
以MySQL 8.0 來說,通過查看 8.0 的官方文檔得知,8.0 的臨時表空間分為會話臨時表空間和全局臨時表空間,會話臨時表空間存儲用戶創建的臨時表和當 InnoDB 配置為磁碟內部臨時表的存儲引擎時由優化器創建的內部臨時表,當會話斷開連接時,其臨時表空間將被截斷並釋放回池中;也就是說,在 8.0 中有一個專門的會話臨時表空間,當會話被殺掉後,可以回收磁碟空間;而原來的 ibtmp1 是現在的全局臨時表空間,存放的是對用戶創建的臨時表進行更改的回滾段,在 5.7 中 ibtmp1 存放的是用戶創建的臨時表和磁碟內部臨時表;
也就是在 8.0 和 5.7 中 ibtmp1 的用途發生了變化,5.7 版本臨時表的數據存放在 ibtmp1 中,在 8.0 版本中臨時表的數據存放在會話臨時表空間,如果臨時表發生更改,更改的 undo 數據存放在 ibtmp1 中;
總結:在 mysql5.7 時,殺掉會話,臨時表會釋放,但是僅僅是在 ibtmp 文件里標記一下,空間是不會釋放回操作系統的。如果要釋放空間,需要重啟資料庫;在 mysql8.0 中可以通過殺掉會話來釋放臨時表空間。
⑹ SQLite PRAGMA是幹嘛的作用是
PRAGMA command 是一個特殊的命令。 它用於修改 SQLite 庫操作或查詢庫以取得內部(非表)數據。 PRAGMA 命令可以使用與其它 SQLite 命令(如 SELECT、INSERT) 相同的介面,只在有如下幾個重要方面有所不同:
pragma 接受一個整數值 value 或一個名字元號。 字元串 "on ", "true " 以及 "yes " 與 1 是等價的。字元串 "off ", "false ", 和 "no " 則等價於 0 。 這些字元串是不區分大小寫的,也不需要雙引號。 不能識別的字元串將被認為是 1 , 而不會提示錯誤。 當返回 value 時,它被看作是一個整數。
PRAGMA auto_vacuum;
PRAGMA auto_vacuum = 0 | none | 1 | full | 2 | incremental ;
在資料庫中查詢或設置 auto-vacuum 。
通常(也就是說在 auto_vacuum 是 0 或 none的時候), 當一個從資料庫中刪除數據的事務提交時,資料庫文件大小不會改變, 未被使用的資料庫文件頁空間被記入一個「空閑列表」中, 這樣,這些空間在以後的 INSERT 中就可以重用。所以, 資料庫文件不會縮小。 在這種模式下,可以使用VACUUM 命令來回收未用的空間。
如果 auto-vacuum 標志是 1 (full,完全模式),空閑列表中的頁將會移到文件的尾部, 那麼,當每次提交事務時,就可以通過將文件截斷來翻譯空閑列表中的頁。 但請注意, auto-vacuum 只會從資料庫文件中載斷空閑列表中的頁, 而不會回收資料庫中的碎片,也不會像VACUUM 命令那樣重新整理資料庫內容。實際上,由於需要在資料庫文件中移動頁, auto-vacuum 會產生更多的碎片。
要使用 auto-vacuum,需要一些前題條件。 資料庫中需要存儲一些額外的信息以記錄它所跟蹤的每個資料庫頁都找回其指針位置。 所以,auto-vacumm 必須在建表之前就開啟。在一個表創建之後, 就不能再開啟或關閉 auto-vacumm。
如果 auto-vacuum 的值是 2 (incremental,增量模式) ,那麼,自動 vacuum 需要使用存放在資料庫文件中的另外的信息。但它不會像 auto_vacuum == full 那樣在每次事務提交的時候發生。在增量模式下,必須使用獨立的 incremental_vacuum pragma 來引發 vacuum。
資料庫連接可以自由地在完全和增量模式間切換。但是, 如果資料庫中已經建了一個表,連接就不能切換到 none 模式, 也不能從 none 模式切換成別的模式。
PRAGMA cache_size;
PRAGMA cache_size = Number-of-pages ;
查詢可修改 SQLite 一次可以在內存中保持的資料庫磁碟頁數量的最大值。 每一頁大約需要 1.5K 的內存空間。預設值是2000。 如果你需要做大的 UPDATE 或 DELETE 操作,每次會影響相當多的資料庫行, 並且你也不在乎 SQLite 佔用更多的內存,那麼,你就可以增加緩存的大小, 這樣,以獲得可能的速度的提升。
當你使用 cache_size pragma 修改緩存大小以後, 改變只會對當前的會話起作用。資料庫連接關閉並重新連接後, 它又會變成預設的大小。如果要永久修改緩存值,則需要使用default_cache_size
PRAGMA case_sensitive_like;
PRAGMA case_sensitive_like = 0 | 1 ;
對於 latin1 字元,LIKE 操作符預設的行為會忽略大小寫。 也就是說,默認情況下, 'a' LIKE 'A' 的結果是true。 可以通過開啟該 pragma 來改變這種行為。當啟用 case_sensitive_like 後,'a' LIKE 'A' 會是 false 但 'a' LIKE 'a' 仍然是 true.
PRAGMA count_changes;
PRAGMA count_changes = 0 | 1 ;
查詢或修改 count-changes 標志。通常, 沒有設置 count-changes ,則 INSERT, UPDATE 和 DELETE 語句不會返回任何數據。 當設置該值時,這些命令都會返回由一個整數組成的一行數據, 該整數表示被該命令所插入,修改或刪除的行數, 但不包括任何由觸發器插入、修改或刪除的行。
PRAGMA default_cache_size;
PRAGMA default_cache_size = Number-of-pages ;
查詢或設置 SQLite 可在內存中同時保持的資料庫磁碟文件頁, 每佔用 1K 磁碟空間的頁需要大約 1.5K 的內存。 該 pragma 類似cache_size 。 只是,它會永久改變緩存的值。通過該 pragma, 可以一次設置緩存值,以後每次後新打開資料庫時都將使用該值。
PRAGMA default_synchronous;
該 pragma 在 2.8 版本中可用,但在 3.0 中刪除了。 使用它非常危險,因此也不推薦使用。 為幫助2.8版本的用戶不再使用該 pragma, 本文檔不會告訴你它怎麼用。
PRAGMA empty_result_callbacks;
PRAGMA empty_result_callbacks = 0 | 1 ;
查詢或設置 empty-result-callbacks 標志。
該標志只會影響 sqlite3_exec API。 通常,當清除該標志時,如果命令返回 0 行數據, 則不會引發用於 sqlite3_exec()上的回調函數。 但若在這種情況下設置了 empty_result_callbacks, 則回調函數會將第三個參數置為 0 (NULL) 並進行調用,且只會調用一次。 這可以使用調用 sqlite3_exec() API 的程序即使在沒有返回數據的情況下也可以獲得列名。
PRAGMA encoding;
PRAGMA encoding = "UTF-8";
PRAGMA encoding = "UTF-16";
PRAGMA encoding = "UTF-16le";
PRAGMA encoding = "UTF-16be";
第一種格式,主資料庫已創建。那麼該 pragma 會返回主資料庫所使用的文件編碼。 可能是: "UTF-8", "UTF-16le" (小印第安 UTF-16 編碼) 或 "UTF-16be" (大印第安 UTF-16 編碼)。 如果主資料庫沒有創建, 那麼返回值將是將要用於創建主資料庫的文本編碼(如果在當前會話中創建的話)。
第二種以及以後的格式只有在主資料庫未創建時有用。 在這種情況下,該 pragma 將會把資料庫編碼設為在當前會話中將要創建的資料庫所使用的編碼。 字元串「UTF-16」會被解釋為「本機位元組順序的UTF-16編碼」。 若第二種及以後的格式用於已創建的資料庫文件上, 則它們會被默默地忽略而不起任何作用。
一旦為資料庫設置了字元編碼,就不能再更改。
使用 ATTACH 命令創建的資料庫記錄使用與主數據相同的編碼。
PRAGMA full_column_names;
PRAGMA full_column_names = 0 | 1 ;
查詢或修改 full-column-names 標志。 該標志會影響當 SELECT 查詢後面的列表是一個 「表-列名」 或 「*」時 SQLite返回列名的方式。通常, 如果 SELECT 語句連接兩個或多個表, 結果列名將是 <表名/別名><列名>; 而若僅僅對單個表查詢時,將是 <column-name>。 但如果設置了 full-column-names 標志,列名將永遠是 <table-name/alias> <column-name> , 而不管是只查詢一個表或同時連接多個表。
如果 short-column-names 和 full-column-names 都設置了, 則會以 full-column-names 為准。
PRAGMA fullfsync
PRAGMA fullfsync = 0 | 1 ;
查詢修改 fullfsync 標志。 該標志影響在支持 F_FULLFSYNC 同步方法的系統上,是否使用該方法。 默認值是 off (不使用)。 在寫本文的時候 (2006-02-10),只有 Mac OS X 支持 F_FULLFSYNC。
PRAGMA incremental_vacuum (N) ;
Incremental_vacuum pragma 會導致從空閑列表中最多移除 N 頁。 資料庫文件也會按該數量截斷。如果資料庫不在 auto_vacuum==incremental 模式, 或空閑列表中沒有頁,則該 pragma 不起作用。 如果空閑列表中不到N 頁,那麼,整個空閑列表會被清空。
對於 3.4.0版來說 (第一個支持 incremental_vacuum 的版本) , 該我仍然是試驗性的。未來可能會增強該功能,包括像 VACUUM 命令那樣整理碎片以及節點重整等。 並且,增量 vacuum 可能會從 pragma 變為一個單獨的 SQL 命令, 也許會是 VACUUM 命令的變體。程序員們要注意不要迷戀於當前的語法, 因為以後有可能會改變。
PRAGMA legacy_file_format;
PRAGMA legacy_file_format = ON | OFF
本 pragma 設置或查詢 legacy_file_format 標志的值。 當它為 on 時,新創建的資料庫文件格式可以被3.0.0以後的版本讀寫。 如果它為 off,則會使用最新的資料庫文件格式,舊版本的SQLite將無法讀寫。
當不帶參數使用該 pragma 時,它返回該標志當前的值。 它 不 會 告訴你當前資料庫所使用的文件格式, 而只會表明在以後創建新資料庫時將使用何種格式。
該標志只對新創建資料庫有效。對已存在的資料庫不起作用。
PRAGMA locking_mode;
PRAGMA locking_mode = NORMAL | EXCLUSIVE
該 pragma 設置或查詢資料庫連接的鎖模式。 鎖模式可能是 NORMAL 或 EXCLUSIVE.
在 NORMAL 模式下, (默認值), 一個資料庫連接會在每次完成讀或寫時釋放資料庫文件鎖。 當鎖模式設為 EXCLUSIVE 時,資料庫連接永遠不會釋放文件鎖。 在該模式下,當第一次讀資料庫文件時,會獲得並持有一個共享鎖。 當第一次向資料庫寫時,將獲得並持有一個排它鎖。
在 EXCLUSIVE 模式下獲得的鎖可以通過關閉資料庫連接來釋放, 也可以通過使用該 pragma 將鎖模式改為 NORMAL,並且再次訪問(讀或寫) 資料庫來釋放。僅僅將鎖模式置為 NORMAL 是不夠的, 直到下一次訪問資料庫文件時才會釋放已持有的鎖。
有兩種原因要求設置 EXCLUSIVE 鎖模式。 一是一個應用程序確實不希望其它進程訪問資料庫文件。 二是在這種模式下可以使用優化器,它可以節省少量的磁碟文件操作。 這在嵌入式系統中可能非常重要。
當 locking_mode pragma 指定一個特定的資料庫時,如:
PRAGMA main. locking_mode=EXCLUSIVE;
那麼,鎖模式只會對該資料庫有效。如果不指定資料庫名稱, 那麼鎖模式會應用於所有資料庫,包括以後使用 ATTACH 命 令連接的資料庫。
臨時( temp) 資料庫 (用於存放臨時表和索引)永遠使用 EXCLUSIVE 鎖模式。臨時資料庫的鎖模式不能改變。所有其它的資料庫則默認使用 NORMAL 鎖模式,並可以通過使用 pragma 改變。
PRAGMA page_size;
PRAGMA page_size = bytes ;
查詢或設置資料庫的 page-size 。只能在資料庫創建之間設置 page-size。 頁的大小必須是 2 的冪, 且冪指數只能在 512 和 8192 之間。 其上限可以在編譯時通過修改源代碼中的 SQLITE_MAX_PAGE_SIZE 修改, 但最大不能超過32768。
PRAGMA max_page_count;
PRAGMA max_page_count = N ;
查詢或設置資料庫文件最大的頁數。 兩種格式都會返回最大的頁數。第二種格式試圖修改最大頁數。 最大頁數不能修改為小於當前資料庫的大小。
PRAGMA read_uncommitted;
PRAGMA read_uncommitted = 0 | 1 ;
查詢,設置或清除 READ UNCOMMITTED (讀未提義)隔離級別。 SQLite 默認的隔離級別是 SERIALIZABLE (可串列化)。 任何進程或線程都可以選擇 READ UNCOMMITTED 級別。但除了在資料庫連接間共享一個通過頁和模式緩存外,仍然會使用 SERIALIZABLE 隔離級別。 共享緩存可以使用 sqlite3_enable_shared_cache() API 開啟, 並且只能在執行同一線程的連接間開啟。共享緩存默認是關閉的。
PRAGMA short_column_names;
PRAGMA short_column_names = 0 | 1 ;
查詢或修改 short-column-names 標志。 該標志會影響當 SELECT 查詢後面的列表是一個 「表-列名」 或 「*」時 SQLite返回列名的方式。 通常, 如果 SELECT 語句連接兩個或多個表, 結果列名將是 <表名/別名><列名>; 而若僅僅對單個表查詢時,將是 <column-name>。 但如果設置了 short-column-names 標志,列名將永遠是 <column-name> , 而不管是只查詢一個表或同時連接多個表。
如果 short-column-names 和 full-column-names 都設置了, 則以 full-column-names 標志為准。
PRAGMA synchronous;
PRAGMA synchronous = FULL; (2)
PRAGMA synchronous = NORMAL; (1)
PRAGMA synchronous = OFF; (0)
查詢或設置 synchronous 標志。 第一種格式返回一個整數,當 synchronous 為 FULL (2) 時, SQLite 資料庫引擎將會在重要的時刻暫停, 以保證在繼續運行之前數據確實已經寫到磁碟上去了。 這能保證在遇到操作系統崩潰可電源故障時, 重新啟動機器資料庫文件不會被破壞。FULL 同步方式是非常安全的, 但也是很慢的。若 synchronous 設為 NORMAL,則 SQLite 資料庫引擎將在大多數重要時刻暫停,但比在 FULL 模式要少。 在極少情況下,處理這種模式的資料庫文件可能會由於「不是時候」 的電源故障而導致受損。但在實際應用中, 更有可有遭受到災難性的磁碟故障或其它無法恢復的硬體故障。 若將 synchronous 設為 OFF (0),那麼 SQLite 從操作系統取得數據後將會立即進行處理而不會暫停。 如果使用 SQLite 的應用程序崩潰,數據將是安全的。 但如果在數據寫入磁碟之前,操作系統死機或機器斷電, 資料庫文件可能會損壞。此外,在該模式下, 某些操作會比其它情況下快 50 倍。
在 SQLite 版本 2 中,默認值是 NORMAL。 對於版本 3, 默認值是 FULL。
PRAGMA temp_store;
PRAGMA temp_store = DEFAULT; (0)
PRAGMA temp_store = FILE; (1)
PRAGMA temp_store = MEMORY; (2)
⑺ sql怎麼建臨時資料庫
1、建立資料庫,並設置默認編碼,sql如下:
create database mytemp default character set utf8;
2、刪除資料庫,sql如下:
drop database if exists mytemp;
有問題歡迎提問,請採納!
⑻ tempdb資料庫的作用是什麼
tempdb是SQL Server的系統資料庫一直都是SQLServer的重要組成部分,用來存儲臨時對象。可以簡單理解tempdb是SQLServer的速寫板。應用程序與資料庫都可以使用tempdb作為臨時的數據存儲區。一個實例的所有用戶都共享一個Tempdb。
特性:
1、 tempdb中的任何數據在系統重新啟動之後都不會持久存在。因為實際上每次SQLServer啟動的時候都會重新創建tempdb。這個特性就說明tempdb不需要恢復。
2、 tempdb始終設置為「simple」的恢復模式,當你嘗試修改時都會報錯。也就是說已提交事務的事務日誌記錄在每個檢查點後都標記為重用。
3、 tempdb也只能有一個filegroup,不能增加更多文件組。
4、 tempdb被用來存儲三種類型的對象:用戶對象,內部對象、版本存儲區