Domanda

Sono un ASP.NET sviluppatore che ha utilizzato Microsoft SQL Server per tutte le mie esigenze di database (sia al lavoro che per progetti personali).

Sto pensando di provare il LAMPADA stack per alcuni dei miei progetti personali.

Quali sono alcune delle principali differenze tra MySQL E SQL Server?Sta usando procedura di archiviazione una pratica comune in MySQL?

Qualche consiglio o risorsa che consiglieresti per aiutarmi con il passaggio?

Per coloro che hanno esperienza con entrambi, ci sono delle funzionalità mancanti MySQL?

È stato utile?

Soluzione

Una cosa a cui devi prestare attenzione sono le differenze piuttosto gravi nel modo in cui SQL Server e MySQL implementano la sintassi SQL.

Ecco una bella Confronto tra diverse implementazioni SQL.

Ad esempio, dai un'occhiata alla sezione top-n.In MySQL:

SELECT age
FROM person
ORDER BY age ASC
LIMIT 1 OFFSET 2

In SQL Server (T-SQL):

SELECT TOP 3 WITH TIES *
FROM person
ORDER BY age ASC

Altri suggerimenti

Molti commenti qui sembrano più argomenti religiosi che affermazioni di vita reale.Lavoro da anni sia con MySQL che con MSSQL ed entrambi sono buoni prodotti.Sceglierei MySQL principalmente in base all'ambiente su cui stai lavorando.La maggior parte dei progetti open source utilizza MySQL, quindi se vai in quella direzione MySQL è la tua scelta.Se sviluppi qualcosa con .Net, sceglierei MSSQL, non perché sia ​​molto migliore, ma solo perché è quello che usa la maggior parte delle persone.Attualmente sto lavorando a un progetto che utilizza ASP.NET con MySQL e C#.Funziona perfettamente.

Non posso credere che nessuno abbia menzionato che MySQL non supporta le istruzioni CTE (Common Table Expressions)/"con".È una differenza piuttosto fastidiosa.

È più probabile che MySQL abbia problemi di corruzione del database e non li risolve automaticamente quando si verificano.Lavoro con MSSQL dalla versione 6.5 e non ricordo un problema di corruzione del database mettendo il database offline.Le poche volte in cui ho lavorato con MySQL in un ambiente di produzione, un problema di corruzione del database ha messo offline l'intero database finché non abbiamo eseguito la magia "correggi il mio indice danneggiato" dalla riga di comando.

Il sistema di transazioni e journaling di MSSQL, secondo la mia esperienza, gestisce praticamente qualsiasi cosa, inclusi un ciclo di accensione o un guasto hardware, senza danneggiare il database e, se qualcosa si incasina, lo risolve automaticamente.

Questa è stata la mia esperienza e sarei felice di sapere che il problema è stato risolto o che stiamo facendo qualcosa di sbagliato.

http://dev.mysql.com/doc/refman/6.0/en/corrupted-myisam-tables.html

http://www.google.com/search?q=site%3Abugs.mysql.com+index+corruption

Francamente, non riesco a trovare un solo motivo per utilizzare MySQL anziché MSSQL.Prima il problema era il costo, ma SQL Server 2005 Express è gratuito e ci sono molte società di web hosting che offrono hosting completo con SQL Server per meno di $ 5,00 al mese.

MSSQL è più facile da usare e ha molte funzionalità che non esistono in MySQL.

Tutto in MySQL sembra essere fatto più vicino al metallo che in MSSQL, e la documentazione lo tratta in questo modo.Soprattutto per l'ottimizzazione, dovrai comprendere come interagiscono gli indici, la configurazione del sistema e l'ottimizzatore in varie circostanze.

L'"ottimizzatore" è più un parser.In MSSQL il tuo piano di query è spesso una sorpresa (di solito buono, a volte no).In MySQL, fa praticamente quello che gli hai chiesto, nel modo in cui ti aspettavi.Ciò significa che tu stesso devi avere una profonda comprensione dei vari modi in cui potrebbe essere fatto.

Non costruito attorno a un buon modello TRANSACTION (motore MyISAM predefinito).

La configurazione del file system è il tuo problema.

Tutta la configurazione del database è il tuo problema, in particolare le varie dimensioni della cache.

A volte sembra meglio pensarlo come un isam glorificato ad hoc.Codd e Date non hanno molto peso qui.Lo direbbero senza imbarazzo.

Penso che una delle cose principali a cui prestare attenzione sia che le versioni precedenti a MySQL 5.0 non disponevano di visualizzazioni, trigger e procedure memorizzate.

Maggiori informazioni su questo argomento sono spiegate nel Pagina di download di MySQL 5.0.

@abdu

La cosa principale che ho scoperto che MySQL ha rispetto a MSSQL è il supporto del fuso orario: la capacità di cambiare piacevolmente il fuso orario, rispettando l'ora legale, è fantastica.

Confronta questo:

mysql> SELECT CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles');
+-----------------------------------------------------------------+
| CONVERT_TZ('2008-04-01 12:00:00', 'UTC', 'America/Los_Angeles') |
+-----------------------------------------------------------------+
| 2008-04-01 05:00:00                                             |
+-----------------------------------------------------------------+

alle contorsioni coinvolte a questa risposta.

Per quanto riguarda il commento "più facile da usare", direi che il punto è che sono diversi e, se ne conosci uno, ci sarà un sovraccarico nell'apprendimento dell'altro.

Entrambi sono prodotti DBMS SQL Server è un'applicazione commerciale mentre MySql è un'applicazione opensouces. Entrambi i prodotti includono funzionalità simili, tuttavia SQL Server dovrebbe essere utilizzato per una soluzione aziendale, mentre MySQL potrebbe essere adatto a un'implementazione più piccola. Se hai bisogno di funzionalità come il ripristino, replica, sicurezza granulare e significativa, è necessario un server SQL

MySql occupa meno spazio su disco e utilizza meno memoria e CPU rispetto a SQL Server

Qualcuno ha una buona esperienza con una "porta" di un database da SQL Server a MySQL?

Questo dovrebbe essere abbastanza doloroso!Ho cambiato versione di MySQL da 4.x a 5.x e varie istruzioni non funzionavano più come prima.L'analizzatore di query è stato "migliorato" in modo che le istruzioni precedentemente ottimizzate per le prestazioni non funzionassero più come previsto.

La lezione appresa lavorando con un database MySQL da 500 GB:È un argomento sottile e tutt'altro che banale!

@Cebjyre.L'IDE, sia Enterprise Manager che Management Studio, è migliore di qualsiasi cosa abbia visto finora per MySQL.Dico "più facile da usare" perché posso fare molte cose in MSSQL dove MySQL non ha controparti.In MySQL non ho idea di come ottimizzare le query semplicemente osservando il piano di query o osservando le statistiche.La procedura guidata di ottimizzazione degli indici in MSSQL si occupa della maggior parte delle ipotesi su quali indici mancano o sono fuori posto.

Uno svantaggio di MySQL è che non esiste una dimensione massima per un database.Il database aumenterebbe di dimensioni fino a riempire il disco.Immagina se questo disco condivide i database con altri utenti e improvvisamente tutte le loro query falliscono perché i loro database non possono crescere.Ho segnalato questo problema a MySQL molto tempo fa.Non penso che sia ancora risolto.

Trascorrendo un po' di tempo lavorando con MySQL dal POV della sintassi da MSSQL a MySQL, continuavo a trovarmi limitato in ciò che potevo fare.

Esistono limiti bizzarri nell'aggiornamento di una tabella mentre si fa riferimento alla stessa tabella durante un aggiornamento.

Inoltre UPDATE FROM non funziona e l'ultima volta che ho controllato non supportano nemmeno la sintassi Oracle MERGE INTO.Questo è stato un punto fermo per me e ho smesso di pensare che da allora in poi sarei arrivato ovunque con MySQL.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top