Tuesday, January 28, 2014

用你的指標,即使一個varchar | |字符

Original post: http://anothermysqldba.blogspot.com/2014/01/use-your-index-even-with-varchar-char.html

最近,我看到的一個帖子forums.mysql.com網站: 如何快速的搜索結果在300萬記錄?
給出的例子中使用了LIKE'%EED“

這將不採取索引的優勢,會做一個全表掃描。
下面是使用世界數據庫的例子,所以不是300萬條記錄,但只是想顯示它是如何工作的。

> explain select * from City where Name LIKE '%dam' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: City
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 4188
Extra: Using where
1 row in set (0.01 sec)

[world]> select count(*) FROM City;
+----------+
| count(*) |
+----------+
| 4079 |
+----------+

> select * from City where Name LIKE '%dam';
+------+------------------------+-------------+----------------+------------+
| ID | Name | CountryCode | District | Population
+------+------------------------+-------------+----------------+------------+
| 5 | Amsterdam | NLD | Noord-Holland | 731200 |
| 6 | Rotterdam | NLD | Zuid-Holland | 593321 |
| 1146 | Ramagundam | IND | Andhra Pradesh | 214384 |
| 1318 | Haldwani-cum-Kathgodam | IND | Uttaranchal | 104195 |
| 2867 | Tando Adam | PAK | Sind | 103400 |
| 3122 | Potsdam | DEU | Brandenburg | 128983 |
+------+------------------------+-------------+----------------+------------+
為了進一步展示點

> explain select * from City where Name LIKE '%dam%' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: City
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 4188
Extra: Using where
1 row in set (0.00 sec)

> select * from City where Name LIKE '%dam%';
+------+------------------------+-------------+----------------+------------+
| ID | Name | CountryCode | District | Population |
+------+------------------------+-------------+----------------+------------+<
| 5 | Amsterdam | NLD | Noord-Holland | 731200 |
| 6 | Rotterdam | NLD | Zuid-Holland | 593321 |
| 380 | Pindamonhangaba | BRA | São Paulo | 121904 |<
| 625 | Damanhur | EGY | al-Buhayra | 212203 |
| 1146 | Ramagundam | IND | Andhra Pradesh | 214384 |
| 1318 | Haldwani-cum-Kathgodam | IND | Uttaranchal | 104195 |
| 1347 | Damoh | IND | Madhya Pradesh | 95661 |
| 2867 | Tando Adam | PAK | Sind | 103400 |
| 2912 | Adamstown | PCN | – | 42 |
| 3122 | Potsdam | DEU | Brandenburg | 128983 |
| 3177 | al-Dammam | SAU | al-Sharqiya | 482300 |
| 3250 | Damascus | SYR | Damascus | 1347000 |
+------+------------------------+-------------+----------------+------------+<
12 rows in set (0.00 sec) 

上述解釋輸出表明,沒有索引的使用方式。

CREATE TABLE `City` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`)
) ENGINE=InnoDB
<

因此,對於笑著讓我們把一個關鍵的varchar字段。 請注意,我不把一個鍵上的整個範圍的前幾個字符。 這當然取決於你的數據。

> ALTER TABLE City ADD KEY name_key(`Name`(5));
Query OK, 0 rows affected (0.54 sec)

CREATE TABLE `City` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
KEY `name_key` (`Name`(5)),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`)
) ENGINE=InnoDB

所以會這樣,甚至重要嗎?

> explain select * from City where Name LIKE '%dam' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: City
type: ALL
possible_keys: NULL
key: NULL
key_len: NULL
ref: NULL
rows: 4188
Extra: Using where
1 row in set (0.00 sec) 

沒有都不會有問題,因為LIKE'%大壩將迫使完整掃描不論。

> EXPLAIN select * from City where Name LIKE '%dam' AND CountryCode = 'IND' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: City
type: ref
possible_keys: CountryCode
key: CountryCode
key_len: 3
ref: const
rows: 341
Extra: Using index condition; Using where
1 row in set (0.00 sec) 

注意上面的解釋輸出的差異。 此查詢使用索引。 它不使用名稱作為索引,但它是使用一個索引。 所以你怎麼能走的varchar指數的優勢在哪裡?

> EXPLAIN select * from City where Name LIKE 'Ra%' \G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: City
type: range
possible_keys: name_key
key: name_key
key_len: 5
ref: NULL
rows: 35
Extra: Using where
1 row in set (0.00 sec) 

上面的查詢將使用name_key指數。

問題的關鍵是在於你有你怎麼寫你的SQL查詢,並確保您運行說明找到的選擇,為您的查詢的最佳指標要小心。

Monday, January 20, 2014

能MySQL複製趕上

Original post: http://anothermysqldba.blogspot.com/2014/01/can-mysql-replication-catch-up.html

因此,複製在MySQL 5.6,最近改善。 然而,人們還在使用5.1和5.5等等一些這些改進將不得不等待打真實的世界。

我最近幫助朝這個方向與地理定位的複製解決方案。 該國的一部分有一個MySQL 5.1服務器和該國的其他部分都安裝一個新的MySQL 5.6服務器。

處理獲得從初級到輔助服務器的初始數據備份的問題後(花了幾個小時,至少可以說),我必須決定可以複寫趕上並跟上。 主服務器有一些大的查詢和優化始終是一個良好的開端。 我不得不在輔助服務器拉和應用一樣快,我能先雖然。

因此,這裡有一些事情要檢查並記住,當涉及到複製。 我已經添加了下面一些幫助鏈接支持我的想法,因為我的工作了。

複製可以是I / O非常沉重。 根據您的應用程序。 一個博客網站沒有那麼多寫這樣的複製I / O是輕,但大量寫入和更新主服務器會導致複製服務器編寫大量relay_logs和binary_logs,如果他們被啟用。 可以在二級啟用二進制日誌允許您運行備份,或者您可能希望此服務器是主給他人。

我分裂登錄到從數據目錄不同的數據分區。
這是設置在my.cnf文件-中繼日誌

InnoDB的緩衝池已被設置為一個值超過10GB。 這是很多這個服務器。
服務器背後仍然超過90,000秒。

所以,我開始做一些調整到服務器,並最終結束了與這些設置。 授予每個服務器是不同的。

的mysql> SELECT @ @ sync_relay_log_info \ G
*************************** 1。 排***************************
@ @ sync_relay_log_info:0
1行中集(0.08秒)

的mysql> SELECT @ @ 的innodb_flush_log_at_trx_commit \ G
*************************** 1。 排***************************
@ @的innodb_flush_log_at_trx_commit:2
1行中集(0.00秒)

的mysql> SELECT @ @ log_slave_updates \ G
*************************** 1。 排***************************
@ @ log_slave_updates:0

的mysql> SELECT @ @ sync_binlog \ G
*************************** 1。 排***************************
@ @ sync_binlog:0
1行中集(0.00秒)

的mysql> SELECT @ @ max_relay_log_size \ G
*************************** 1。 排***************************
@ @ max_relay_log_size:268435456

我打開二進制日誌關閉,因為我監視不同的設置和選項,以幫助複製迎頭趕上。 過了好一會兒。 你們當中有些人看到上面的設置可能會或可能不會被像我這樣的時間框架內工作應用。 然而,它沒有趕上為0秒回。 現在,你可能會注意到,很多這些設置與上面和周圍的二進制日誌。 於是我就一個小測試。 於是,我重新啟動並啟用的bin日誌。 我檢查了服務器上後,發現它10000 +秒落後。 所以,我再次重新啟動和禁用的bin日誌。 它趕上了(0秒在),在不到15分鐘的主服務器。 我用Aurimas“ 工具 ,因為我看著它趕上為好。 如果你以前沒有使用它,它是一個非常好的和方便的工具。

這一切意味著什麼是主服務器必須是ACID兼容。 有了這個設置你也取決於操作系統的緩存上和清理。 這是服務器將被用​​來作為一個主要的讀取服務器信息反饋給他人。 這也意味著,是的,地理定位的複製可以保持最新與主服務器。

如果你需要停止的奴隸,將它仍然趕上快?

如何以及為什麼你停止奴隸是我的第一反應。 你應該養成使用的習慣, 停止從SQL_THREAD ,而不是停止從 ,這使得中繼日誌繼續收集數據,只是沒有把它應用到你的主服務器。 所以,如果你可以利用的,這將有助於減少需要為你以後填入中繼日誌的時間。

一些額外的閱讀為您提供:

Saturday, January 4, 2014

辛勤工作,被忽視....

Originally posted: http://anothermysqldba.blogspot.com/2014/01/hard-work-that-goes-unnoticed.html

我今天花了一點時間,並更新了我的Linux發行版之一。 在這種分配我碰巧有Percona的5.6安裝為MySQL數據庫。 我之前如何設置你的選擇都提到的MySQL通過yum軟件庫

在這裡我想說的是,雖然,我們怎麼永遠感謝這些人對他們做的工作?

許多這些存儲庫是由公司經營和這些人得到報酬為他們做什麼。 然而,通過Linux(包括Debian / Ubuntu的)社會調查的和一般的觀察/問題,大多數人都不會升級,直到它可在它們的分佈。 我碰巧是一個誰願意留在安全性和bug修復頂部,所以我有yum的存儲庫從源更新盡可能多地。

我的觀點是,大量的工作進入這些文件的包裝分發和在大多數情況下,它看起來像一個漂亮的吃力不討好的工作。 我記得tar和gzip的舊的(不老但舊)天,當你不得不去挖掘和發現依賴自己。 - 。/ configure的.. 都能跟得上需要別的東西去下載並安裝然後再試一次.....

我剛剛升級25個不同的包在幾分鐘,這將之前已經採取了一些時間。 雖然百勝和APT得到的是新遠,我聽起來像一個舊的計時器在這裡,我只是認為這可能是不錯的說感謝,向所有誰在幕後工作,使我們所有的Linux經驗的人,更遑論有關MySQL的安裝,更方便,更流暢。

我將指出,甲骨文確實有5.6包現已推出。


我記得我以前的帖子提到它是如何不在場。

Thursday, January 2, 2014

一個MySQL DBA著眼於PostgreSQL的第3部分的PostgreSQL到MySQL

Original post: http://anothermysqldba.blogspot.com/2014/01/a-mysql-dba-looks-at-postgresql-part3.html

所以我最近發表: 一個MySQL DBA著眼於PostgreSQL的第2部分:MySQL的PostgreSQL的 。

這篇文章將探討從遷移的PostgreSQLMySQL的 。 再次,這些職位的長期目標是要能夠顯示數據的不同的數據庫中是如何工作的,以及如何解決每個數據庫中類似的問題,當例子應該出現。

MySQL的推動工作台的MySQL數據庫遷移工具。 我必須承認,我很好奇,為什麼MySQL的工具並沒有提供一個命令行選項。 以前的博客文章( 第2部分 )顯示,通過命令行遷移多麼容易的MySQLPostgreSQL的 。 但請記住這把數據時返回的MySQL數據引擎必須考慮。

簡單來說,如果你打算把數據備份到MySQL的PostgreSQL的一個快速的選擇很可能是MySQL的工作台 。 但是,這並不是一個整體的解決方案,因為我們常常喜歡呆在我們的終端窗口內。 所以,你會做以下幾點:
  • 轉儲從架構的PostgreSQL到一個文件中
    • 查看和編輯MySQL的文件。
  • 每個需要的模式和表導出了作為一個csv文件。
  • 導回到MySQL的

無論如何,首先我們還是有數據的PostgreSQL世界數據庫實例。

world=> \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | city | table | testuser
public | country | table | testuser
public | countrylanguage | table | testuser
(3 rows)

world=> select count(ID) from City;
count
-------
4079
(1 row)

world=> 


dump出來的架構:

$ pg_dump -s world > world_schema.pgsql 


使用pg_dump的走 - 僅數據和 - 插入簡單地建立數據標準的SQL文件。

pg_dump --data-only --inserts world > world_data.pgsql 

以後你會看到,做每個表轉儲會更好,但這個工程。

在MySQL中創建一個數據庫,將數據備份以及測試新的模式。

mysql> CREATE DATABASE world_back;
Query OK, 1 row affected (0.01 sec) 


編輯schema文件:vi world_schema.pgsql
你有新的MySQL數據庫創建的,因此你可以為你去測試它們。


CREATE TABLE city (
id integer DEFAULT nextval('city_id_seq'::regclass) NOT NULL,
name character(35) DEFAULT ''::bpchar NOT NULL,
countrycode character(3) DEFAULT ''::bpchar NOT NULL,
district character(20) DEFAULT ''::bpchar NOT NULL,
population integer DEFAULT 0 NOT NULL
);

CREATE TABLE country (
code character(3) DEFAULT ''::bpchar NOT NULL,
name character(52) DEFAULT ''::bpchar NOT NULL,
continent character varying DEFAULT 'Asia'::character varying NOT NULL,
region character(26) DEFAULT ''::bpchar NOT NULL,
surfacearea double precision DEFAULT 0::double precision NOT NULL,
indepyear smallint,
population integer DEFAULT 0 NOT NULL,
lifeexpectancy double precision,
gnp double precision,
gnpold double precision,
localname character(45) DEFAULT ''::bpchar NOT NULL,
governmentform character(45) DEFAULT ''::bpchar NOT NULL,
headofstate character(60) DEFAULT NULL::bpchar,
capital integer,
code2 character(2) DEFAULT ''::bpchar NOT NULL,
CONSTRAINT country_continent_check CHECK (((continent)::text = ANY ((ARRAY['Asia'::character varying, 'Europe'::character varying, 'North America'::character varying, 'Africa'::character varying, 'Oceania'::character varying, 'Antarctica'::character varying, 'South America'::character varying])::text[])))
);
ALTER TABLE ONLY city
ADD CONSTRAINT city_pkey PRIMARY KEY (id);

CREATE INDEX city_countrycode_idx ON city USING btree (countrycode); 


你將需要審查該文件的所有相關鍵,以便您可以創建有效的報表。
你需要了解MySQL的,因此您可以創建有效的CREATE TABLE語句。


CREATE TABLE city (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` char(35) NOT NULL DEFAULT '',
`countrycode` char(3) NOT NULL DEFAULT '',
`district` char(20) NOT NULL DEFAULT '',
`population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
);

CREATE TABLE `country` (
`code` char(3) NOT NULL DEFAULT '',
`name` char(52) NOT NULL DEFAULT '',
`continent` char(5) NOT NULL DEFAULT '',
`region` char(26) NOT NULL DEFAULT '',
`surfaceArea` float(10,2) NOT NULL DEFAULT '0.00',
`indepyear` smallint(6) DEFAULT NULL,
`population` int(11) NOT NULL DEFAULT '0',
`lifeexpectancy` float(3,1) DEFAULT NULL,
`gnp` float(10,2) DEFAULT NULL,
`gnpold` float(10,2) DEFAULT NULL,
`localname` char(45) NOT NULL DEFAULT '',
`governmentform` char(45) NOT NULL DEFAULT '',
`headofstate` char(60) DEFAULT NULL,
`capital` int(11) DEFAULT NULL,
`code2` char(2) NOT NULL DEFAULT '',
PRIMARY KEY (`code`)
); 

這當然是你了。 但一旦你計算出每個表的主鍵,我會創造ALTER語句來更新新的模式,這樣可以保證你捕捉一切。 雖然他們都可以直接作為您處理PostgreSQL的轉儲文件進行塗改可以讓你在檢查加入到在大多數情況下的第一個CREATE語句。

所需的ALTER語句的一些例子:

ALTER TABLE city ENGINE=InnoDB;
ALTER TABLE country ENGINE=InnoDB;
ALTER TABLE countrylanguage ENGINE=InnoDB;

ALTER TABLE country DROP continent;
ALTER TABLE country ADD continent enum('Asia','Europe','North America','Africa','Oceania','Antarctica','South America') NOT NULL DEFAULT 'Asia' AFTER name;

ALTER TABLE city ADD KEY `countrycode` (`countrycode`),
ALTER TABLE city ADD CONSTRAINT `city_ibfk_1` FOREIGN KEY (`countrycode`) REFERENCES `country` (`code`) 


一旦所有的架構更新和有效的。 你可以把保存的數據備份。

vi world_data.pgsql to remove the SET statements at the top.
--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = public, pg_catalog; 

因為複製的限制的文件出來每桌在這種情況下。 編輯相應地使每個文件只有每個表中的數據。我應該只是把這樣或只是每桌倒回。

$ cp world_data.pgsql world_data_city.pgsql
$ cp world_data.pgsql world_data_countrylanguage.pgsql
$ cp world_data.pgsql world_data_country.pgsql

$ mysql -u root -p world_back < world_data_country.pgsql
Enter password:
$ mysql -u root -p world_back < world_data_countrylanguage.pgsql
Enter password:
$ mysql -u root -p world_back < world_data_city.pgsql 


因此,簡單地把它是不容易,我應該說的自動化,到MySQL通過命令行由於架構更改,這將需要您注意的遷移,但它可以做到的。 

mysql> select count(id) from city;
+-----------+
| count(id) |
+-----------+
| 4079 |
+-----------+
1 row in set (0.14 sec)

MySQL的工作台當然,數據庫遷移可以做同樣的過程,你可以了解更多有關該工具在這裡-http://www.mysql.com/products/workbench/migrate/ 

Wednesday, January 1, 2014

一個MySQL DBA著眼於PostgreSQL的第2部分:的MySQL改為PostgreSQL

Original post: http://anothermysqldba.blogspot.com/2014/01/a-mysql-dba-looks-at-postgresql-part2.html

所以我最近發表: 一個MySQL DBA著眼於PostgreSQL的 

這篇文章將探討從遷移的MySQLPostgreSQL的 。 我會盡快跟進與PostgreSQL的遷移回的MySQL 。 與這些職位的長期目標是要顯示的數據不同的數據庫中是如何工作的,以及如何解決每個數據庫中類似問題的時候應該出現了。 

對於遷移,我將使用經常使用的例子: 世界數據庫可在dev.mysql.com 。 

我也會承認這一點,我有更多的經驗豐富的MySQLPostgreSQL的 。 的PostgreSQL數據庫管理員可以編寫和推薦不同的解決方案這種情況。 這也是一個很簡單的例子。 

首先要保證這個過程從開始到結束: 


mysql> create database world;
Query OK, 1 row affected (0.00 sec

# mysql world < world_innodb.sql
mysql> show create table City;
CREATE TABLE `City` (
`ID` int(11) NOT NULL AUTO_INCREMENT,
`Name` char(35) NOT NULL DEFAULT '',
`CountryCode` char(3) NOT NULL DEFAULT '',
`District` char(20) NOT NULL DEFAULT '',
`Population` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY (`ID`),
KEY `CountryCode` (`CountryCode`),
CONSTRAINT `city_ibfk_1` FOREIGN KEY (`CountryCode`) REFERENCES `Country` (`Code`)
) ENGINE=InnoDB

mysql> select count(ID) from City\G
*************************** 1. row ***************************
count(ID): 4079 


所以,現在讓我得到了PostgreSQL的數據庫設置和準備。 

# su postgres
$ psql
psql (9.3.2)
Type "help" for help.

postgres=# CREATE DATABASE world;
CREATE DATABASE

# GRANT ALL ON DATABASE world TO testuser;
GRANT 


postgres=# \q 


這個簡單的perl腳本( mysql2pgsql.perl )有助於從遷移過程的MySQLPostgreSQL的 。 


# su testuser
$ cd
$ pwd
/home/testuser
$ wget http://pgfoundry.org/frs/download.php/1535/mysql2pgsql.perl 


收集的MySQL數據,並得到它準備好。 

mysqldump -u root -p world > mysql2postgresql.sql
$ ./mysql2pgsql.perl mysql2postgresql.sql mysql2postgresql.pgsql
table "city" will be dropped CASCADE
"city_id_seq"--
table "country" will be dropped CASCADE
table "countrylanguage" will be dropped CASCADE

$ psql world < mysql2postgresql.pgsql | more
DROP TABLE
DROP SEQUENCE
CREATE SEQUENCE
CREATE TABLE
INSERT 0 1 

..
INSERT 0 1
注意:下拉級聯到2其他對象
詳細信息:降級聯到約束countrylanguage_countrycode_fkey上表countrylanguage
瀑布跌落到約束city_countrycode_fkey上表城市
..
INSERT 0 1
INSERT 0 1
DROP TABLE
CREATE TABLE
INSERT 0 1
INSERT 0 1
..
INSERT 0 1
CREATE INDEX
ALTER TABLE


因此,讓我們看看我們所擁有的。 


$ psql -d world
psql (9.3.2)
Type "help" for help.

world=> \dt
List of relations
Schema | Name | Type | Owner
--------+-----------------+-------+----------
public | city | table | testuser
public | country | table | testuser
public | countrylanguage | table | testuser
(3 rows) 


從城市的世界=> SELECT COUNT(ID);
-------
4079
(1行)

世界=> SELECT * FROM城市限10;
ID |名稱|國家代碼|區|人口
---- + ------------------------------------- + ------- ------ + ---------------------- + ------------
1 |喀布爾| AFG | Kabol | 1780000
2 |坎大哈| AFG |坎大哈| 237500
3 |赫拉特| AFG |赫拉特| 186800
4 |馬扎裡 - 沙裡夫| AFG |巴爾赫| 127800
5 |阿姆斯特丹|民盟|北荷蘭省| 731200
6 |鹿特丹|民盟|南荷蘭省| 593321
7 |哈格|民盟|南荷蘭省| 440900
8 |烏得勒支|民盟|烏得勒支| 234323
9 |埃因霍溫|民盟|北布拉班特| 201843
10 |蒂爾堡|民盟|北布拉班特| 193238
(10行)

世界=> \ DT +城市
關係一覽表
架構|名稱|型號|業主|大小|說明
-------- + ------ + ------- + ---------- + -------- + ------ -------
公共|城市|表| TESTUSER | 432 KB |
(1行)


以及計數匹配和數據可用。 但現在我想看到的是MySQL版本的“SHOW CREATE TABLE”,請記住,在MySQL的 CREATE DATABASE和CREATE SCHEMA基本上是相同的東西。 


$ pg_dump -t city -s world
--
-- PostgreSQL database dump
--

SET statement_timeout = 0;
SET lock_timeout = 0;
SET client_encoding = 'UTF8';
SET standard_conforming_strings = on;
SET check_function_bodies = false;
SET client_min_messages = warning;

SET search_path = public, pg_catalog;

SET default_tablespace = '';

SET default_with_oids = false;

--
-- Name: city; Type: TABLE; Schema: public; Owner: testuser; Tablespace:
--

CREATE TABLE city (
id integer DEFAULT nextval('city_id_seq'::regclass) NOT NULL,
name character(35) DEFAULT ''::bpchar NOT NULL,
countrycode character(3) DEFAULT ''::bpchar NOT NULL,
district character(20) DEFAULT ''::bpchar NOT NULL,
population integer DEFAULT 0 NOT NULL
);


ALTER TABLE public.city OWNER TO testuser;

--
-- Name: city_pkey; Type: CONSTRAINT; Schema: public; Owner: testuser; Tablespace:
--

ALTER TABLE ONLY city
ADD CONSTRAINT city_pkey PRIMARY KEY (id);


--
-- Name: city_countrycode_idx; Type: INDEX; Schema: public; Owner: testuser; Tablespace:
--

CREATE INDEX city_countrycode_idx ON city USING btree (countrycode);


--
-- PostgreSQL database dump complete
-- 


正如你可以看到,看看表是一樣的的mysqldump命令 
$ mysqldump的 - ü根 - 對 - NO_DATA - 世界數據庫 - 表城 
更多的工作比一個典型的MySQL是用來不得不做只是為了看看表結構。 

但我們的數據和架構移到到PostgreSQL的MySQL的 。 

另一篇文章很快就來了... 移動回來。