日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

mysql innodb学习笔记

發布時間:2025/3/19 数据库 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 mysql innodb学习笔记 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、復制表:

1、CREATE TABLE A LIKE B

此種方式在將表B復制到A時候會將表B完整的字段結構和索引復制到表A中來。

2、CREATE?TABLE?A?AS?SELECT?x,x,x,xx?FROM?B?LIMIT?0

此種方式只會將表B的字段結構復制到表A中來,但不會復制表B中的索引到表A中來。

這種方式比較靈活可以在復制原表表結構的同時指定要復制哪些字段,并且自身復制表也可以根據需要增加字段結構。

兩種方式在復制表的時候均不會復制權限對表的設置。比如說原本對表B做了權限設置,復制后,表A不具備類似于表B的權限。


二、復制表記錄:


1、create table a as select * from b

舉例:


mysql> desc test;
+------------+---------------------+------+-----+---------+-------+
| Field????? | Type??????????????? | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| TABLE_NAME | varchar(64)???????? | NO?? |???? |???????? |?????? |
| ENGINE???? | varchar(64)???????? | YES? |???? | NULL??? |?????? |
| VERSION??? | bigint(21) unsigned | YES? |???? | NULL??? |?????? |
+------------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)


mysql> create table test1 as select * from test;? ?
Query OK, 3604480 rows affected (6.04 sec)
Records: 3604480? Duplicates: 0? Warnings: 0



2、insert into table a select * from b

舉例:


mysql> desc test;
+------------+---------------------+------+-----+---------+-------+
| Field????? | Type??????????????? | Null | Key | Default | Extra |
+------------+---------------------+------+-----+---------+-------+
| TABLE_NAME | varchar(64)???????? | NO?? |???? |???????? |?????? |
| ENGINE???? | varchar(64)???????? | YES? |???? | NULL??? |?????? |
| VERSION??? | bigint(21) unsigned | YES? |???? | NULL??? |?????? |
+------------+---------------------+------+-----+---------+-------+
3 rows in set (0.00 sec)

mysql> insert into test select * from test;
Query OK, 1802240 rows affected (16.99 sec)
Records: 1802240? Duplicates: 0? Warnings: 0



其中1使用方法為DDL,而2為DML,在復制大表記錄時1效率要高于2,

原理分析:create table as是ddl語句,insert into select是dml語句,insert into select每一條記錄的時候都會產生undo和redo,整個過程相比create table as產生的redo和undo相當多,因此整個過程會慢也是正常的;但是create table as使用的前提是目標表的結構不存在才能使用;

當有大量數據的時候不推薦使用Insert into as,因為該語句的插入的效率很慢;


三、InnoDB配置

??? InnoDB存儲引擎是默認地被允許的。如果你不想用InnoDB表,你可以添加skip-innodb選項到MySQL選項文件。

??? 被InnoDB存儲引擎管理的兩個重要的基于磁盤的資源是InnoDB表空間數據文件和它的日志文件。

??? 如果你指定無InnoDB配置選項,MySQL將在MySQL數據目錄下創建一個名為ibdata110MB大小的自動擴展數據文件,以及兩個名為ib_logfile0ib_logfile15MB大小的日志文件。

???

??? 要建立InnoDB表空間文件,在my.cnf選項文件里的[mysqld]節里使用innodb_data_file_path選項。在Windows上,你可以替代地使用my.ini文件。innodb_data_file_path的值應該為一個或多個數據文件規格的列表。

??? 如果你命名一個以上的數據文件,用分號(;)分隔它們:

?????? innodb_data_file_path=datafile_spec1[;datafile_spec2]...

??? 例如:把明確創建的具有相同特征的表空間作為默認設置的設置操作如下:

?????? [mysqld]innodb_data_file_path=ibdata1:10M:autoextend這個設置配置一個可擴展大小的尺寸為10MB的單獨文件,名為ibdata1。沒有給出文件的位置,所以默認的是在MySQL的數據目錄內。

??? 尺寸大小用M或者G后綴來指定說明單位是MB或者GB

??? 一個表空間,它在數據目錄里包含一個名為ibdata1的固定尺寸50MB的數據文件和一個名為ibdata2大小為50MB的自動擴展文件,其可以像這樣被配置:

?????? [mysqld]innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

一個指定數據文件的完全后綴包括文件名,它的尺寸和數個可選屬性:

?????? file_name:file_size[:autoextend[:max:max_file_size]]autoextend屬性和后面跟著的屬性只可被用來對innodb_data_file_path行里最后一個數據文件。

??? 如果你對最后的數據文件指定autoextend選項。如果數據文件耗盡了表空間中的自由空間,InnoDB就擴展數據文件。擴展的幅度是每次8MB

??? InnoDB并不感知最大文件尺寸,所以要小心文件系統,在那上面最大的文件尺寸是2GB。要為一個自動擴展數據文件指定最大尺寸,請使用max屬性。下列配置允許ibdata1漲到極限的500MB

?????? [mysqld]innodb_data_file_path=ibdata1:10M:autoextend:max:500M

InnoDB默認地在MySQL數據目錄創建表空間文件。要明確指定一個位置,請使用innodb_data_home_dir選項。比如,要使用兩個名為ibdata1ibdata2的文件,但是要把他們創建到/ibdata,像如下一樣配置InnoDB

[mysqld]
innodb_data_home_dir=/ibdata
innodb_data_file_path=ibdata1:50M;ibdata2:50M:autoextend

??? 注釋:InnoDB不創建目錄,所以在啟動服務器之前請確認/ibdata目錄的確存在。這對你配置的任何日志文件目錄來說也是真實的。使用UnixDOSmkdir命令來創建任何必需的目錄。

??? 通過把innodb_data_home_dir的值原原本本地部署到數據文件名,并在需要的地方添加斜杠或反斜杠,InnoDB為每個數據文件形成目錄路徑。如果innodb_data_home_dir選項根本沒有在my.cnf中提到,默認值是“dot”目錄 ./,這意思是MySQL數據目錄。

??? 如果你指定innodb_data_home_dir為一個空字符串,你可以為列在innodb_data_file_path值里的數據文件指定絕對路徑。下面的例子等價于前面那個例子:

[mysqld]
innodb_data_home_dir=
innodb_data_file_path=/ibdata/ibdata1:50M;/ibdata/ibdata2:50M:autoextend

??? 注意,在一些文件系統上,數據文件必需小于2GB。數據文件的合并尺寸必須至少10MB

innodb日志參數如下:



| innodb_log_buffer_size??? | 1048576??? |
| innodb_log_file_size????? | 5242880??? |
| innodb_log_files_in_group | 3????????? |
| innodb_log_group_home_dir | /tmp/mysql




轉載于:https://blog.51cto.com/wushank/1641441

總結

以上是生活随笔為你收集整理的mysql innodb学习笔记的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。